{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f02249e2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# importing libaries\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7c6ddce9",
   "metadata": {},
   "outputs": [],
   "source": [
    "class LEMCell(nn.Module):\n",
    "    def __init__(self, ninp, nhid, dt):\n",
    "        super(LEMCell, self).__init__()\n",
    "        self.ninp = ninp\n",
    "        self.nhid = nhid\n",
    "        self.dt = dt\n",
    "        self.inp2hid = nn.Linear(ninp, 4 * nhid)\n",
    "        self.hid2hid = nn.Linear(nhid, 3 * nhid)\n",
    "        self.transform_z = nn.Linear(nhid, nhid)\n",
    "        self.reset_parameters()\n",
    "\n",
    "    def reset_parameters(self):\n",
    "        std = 1.0 / np.sqrt(self.nhid)\n",
    "        for w in self.parameters():\n",
    "            w.data.uniform_(-std, std)\n",
    "\n",
    "    def forward(self, x, y, z):\n",
    "        transformed_inp = self.inp2hid(x)\n",
    "        transformed_hid = self.hid2hid(y)\n",
    "        i_dt1, i_dt2, i_z, i_y = transformed_inp.chunk(4, 1)\n",
    "        h_dt1, h_dt2, h_y = transformed_hid.chunk(3, 1)\n",
    "\n",
    "        ms_dt_bar = self.dt * torch.sigmoid(i_dt1 + h_dt1)\n",
    "        ms_dt = self.dt * torch.sigmoid(i_dt2 + h_dt2)\n",
    "\n",
    "        z = (1. - ms_dt) * z + ms_dt * torch.tanh(i_y + h_y)\n",
    "        y = (1. - ms_dt_bar) * y + ms_dt_bar * torch.tanh(self.transform_z(z) + i_z)\n",
    "\n",
    "        return y, z\n",
    "\n",
    "# Define the LEM model\n",
    "class LEM(nn.Module):\n",
    "    def __init__(self, ninp, nhid, nout, dt=1.):\n",
    "        super(LEM, self).__init__()\n",
    "        self.nhid = nhid\n",
    "        self.cell = LEMCell(ninp, nhid, dt)\n",
    "        self.classifier = nn.Linear(nhid, nout)\n",
    "        self.init_weights()\n",
    "\n",
    "    def init_weights(self):\n",
    "        for name, param in self.named_parameters():\n",
    "            if 'classifier' in name and 'weight' in name:\n",
    "                nn.init.kaiming_normal_(param.data)\n",
    "\n",
    "    def forward(self, input):\n",
    "        y = input.data.new(input.size(1), self.nhid).zero_()\n",
    "        z = input.data.new(input.size(1), self.nhid).zero_()\n",
    "        for x in input:\n",
    "            y, z = self.cell(x, y, z)\n",
    "        out = self.classifier(y)\n",
    "        return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "36d6fa55",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Toy problem data\n",
    "input_size = 256  # number of columns in a dataset\n",
    "hidden_size = 32  # number of neurons\n",
    "output_size = 256  \n",
    "sequence_length = 160  # number of sequences/ number of rows\n",
    "batch_size = 1\n",
    "num_epochs = 20000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "f6a2ae56",
   "metadata": {},
   "outputs": [],
   "source": [
    "# importing data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2103e0ff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'__header__': b'MATLAB 5.0 MAT-file Platform: posix, Created on: Thu Jul 20 15:02:48 2023',\n",
       " '__version__': '1.0',\n",
       " '__globals__': [],\n",
       " 'h': array([[0.03949907, 0.03945555, 0.03968762, ..., 0.04081577, 0.04034067,\n",
       "         0.03995187],\n",
       "        [0.03949522, 0.03972834, 0.04007071, ..., 0.0406224 , 0.0405568 ,\n",
       "         0.04021852],\n",
       "        [0.03980837, 0.03966293, 0.04008707, ..., 0.04077249, 0.04050591,\n",
       "         0.04019281],\n",
       "        ...,\n",
       "        [0.04915863, 0.04935256, 0.04961976, ..., 0.04917885, 0.04899574,\n",
       "         0.04881741],\n",
       "        [0.04904458, 0.04916197, 0.04943338, ..., 0.04902097, 0.04897786,\n",
       "         0.04875013],\n",
       "        [0.04913692, 0.04932824, 0.04941899, ..., 0.04888785, 0.0488357 ,\n",
       "         0.04855312]])}"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Load the .mat file\n",
    "v_data = scipy.io.loadmat('v.mat')\n",
    "h_data = scipy.io.loadmat('h.mat')\n",
    "x_data = scipy.io.loadmat('x.mat')\n",
    "h_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "172f53d3",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = x_data['X']\n",
    "u = h_data['h']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "2cd6fd81",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(201, 256)\n",
      "(201, 256)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[0.03949907, 0.03945555, 0.03968762, ..., 0.04081577, 0.04034067,\n",
       "        0.03995187],\n",
       "       [0.03949522, 0.03972834, 0.04007071, ..., 0.0406224 , 0.0405568 ,\n",
       "        0.04021852],\n",
       "       [0.03980837, 0.03966293, 0.04008707, ..., 0.04077249, 0.04050591,\n",
       "        0.04019281],\n",
       "       ...,\n",
       "       [0.04915863, 0.04935256, 0.04961976, ..., 0.04917885, 0.04899574,\n",
       "        0.04881741],\n",
       "       [0.04904458, 0.04916197, 0.04943338, ..., 0.04902097, 0.04897786,\n",
       "        0.04875013],\n",
       "       [0.04913692, 0.04932824, 0.04941899, ..., 0.04888785, 0.0488357 ,\n",
       "        0.04855312]])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(x.shape)\n",
    "print(u.shape)\n",
    "u"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "bf954b1d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x7ff72c101790>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Set random seed for reproducibility\n",
    "torch.manual_seed(42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "cdabefdf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test data shape (40, 256)\n",
      "test target shape (40, 256)\n",
      "input data shape (160, 256)\n",
      "Target data shape (160, 256)\n"
     ]
    }
   ],
   "source": [
    "input_data = u[0:160,:]\n",
    "target_data = u[1:161, :]\n",
    "\n",
    "test_data = u[160:200, :]\n",
    "test_target = u[161:201, :]\n",
    "\n",
    "print(\"test data shape\", test_data.shape)\n",
    "print(\"test target shape\", test_target.shape)\n",
    "\n",
    "print(\"input data shape\",input_data.shape)\n",
    "print(\"Target data shape\",target_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "b32d98b1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "input tensor shape torch.Size([1, 160, 256])\n",
      "Target tensor shape torch.Size([1, 160, 256])\n"
     ]
    }
   ],
   "source": [
    "# Convert data to tensors\n",
    "input_tensor = torch.tensor(input_data).view(batch_size, sequence_length, input_size).float()\n",
    "target_tensor = torch.tensor(target_data).view(batch_size, sequence_length, output_size).float()\n",
    "\n",
    "print(\"input tensor shape\",input_tensor.shape)\n",
    "print(\"Target tensor shape\",target_tensor.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "b4c0af1d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Convert test data to tensors\n",
    "test_tensor = torch.tensor(test_data).view(batch_size, 40, input_size).float()\n",
    "test_target_tensor = torch.tensor(test_target).view(batch_size, 40, output_size).float()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "928ae47f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10/20000, Loss: 0.688335\n",
      "Epoch: 20/20000, Loss: 0.644207\n",
      "Epoch: 30/20000, Loss: 0.603241\n",
      "Epoch: 40/20000, Loss: 0.560971\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/data/localhome/tkapoor/.local/lib/python3.8/site-packages/torch/nn/modules/loss.py:520: UserWarning: Using a target size (torch.Size([1, 160, 256])) that is different to the input size (torch.Size([160, 256])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n",
      "  return F.mse_loss(input, target, reduction=self.reduction)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 50/20000, Loss: 0.518000\n",
      "Epoch: 60/20000, Loss: 0.479887\n",
      "Epoch: 70/20000, Loss: 0.447305\n",
      "Epoch: 80/20000, Loss: 0.418399\n",
      "Epoch: 90/20000, Loss: 0.392489\n",
      "Epoch: 100/20000, Loss: 0.369106\n",
      "Epoch: 110/20000, Loss: 0.347846\n",
      "Epoch: 120/20000, Loss: 0.328397\n",
      "Epoch: 130/20000, Loss: 0.310514\n",
      "Epoch: 140/20000, Loss: 0.294003\n",
      "Epoch: 150/20000, Loss: 0.278706\n",
      "Epoch: 160/20000, Loss: 0.264493\n",
      "Epoch: 170/20000, Loss: 0.251253\n",
      "Epoch: 180/20000, Loss: 0.238891\n",
      "Epoch: 190/20000, Loss: 0.227325\n",
      "Epoch: 200/20000, Loss: 0.216485\n",
      "Epoch: 210/20000, Loss: 0.206308\n",
      "Epoch: 220/20000, Loss: 0.196740\n",
      "Epoch: 230/20000, Loss: 0.187732\n",
      "Epoch: 240/20000, Loss: 0.179241\n",
      "Epoch: 250/20000, Loss: 0.171230\n",
      "Epoch: 260/20000, Loss: 0.163663\n",
      "Epoch: 270/20000, Loss: 0.156509\n",
      "Epoch: 280/20000, Loss: 0.149742\n",
      "Epoch: 290/20000, Loss: 0.143335\n",
      "Epoch: 300/20000, Loss: 0.137267\n",
      "Epoch: 310/20000, Loss: 0.131517\n",
      "Epoch: 320/20000, Loss: 0.126065\n",
      "Epoch: 330/20000, Loss: 0.120895\n",
      "Epoch: 340/20000, Loss: 0.115991\n",
      "Epoch: 350/20000, Loss: 0.111338\n",
      "Epoch: 360/20000, Loss: 0.106922\n",
      "Epoch: 370/20000, Loss: 0.102731\n",
      "Epoch: 380/20000, Loss: 0.098754\n",
      "Epoch: 390/20000, Loss: 0.094979\n",
      "Epoch: 400/20000, Loss: 0.091397\n",
      "Epoch: 410/20000, Loss: 0.087997\n",
      "Epoch: 420/20000, Loss: 0.084772\n",
      "Epoch: 430/20000, Loss: 0.081711\n",
      "Epoch: 440/20000, Loss: 0.078808\n",
      "Epoch: 450/20000, Loss: 0.076055\n",
      "Epoch: 460/20000, Loss: 0.073444\n",
      "Epoch: 470/20000, Loss: 0.070968\n",
      "Epoch: 480/20000, Loss: 0.068622\n",
      "Epoch: 490/20000, Loss: 0.066400\n",
      "Epoch: 500/20000, Loss: 0.064294\n",
      "Epoch: 510/20000, Loss: 0.062300\n",
      "Epoch: 520/20000, Loss: 0.060412\n",
      "Epoch: 530/20000, Loss: 0.058625\n",
      "Epoch: 540/20000, Loss: 0.056934\n",
      "Epoch: 550/20000, Loss: 0.055335\n",
      "Epoch: 560/20000, Loss: 0.053823\n",
      "Epoch: 570/20000, Loss: 0.052394\n",
      "Epoch: 580/20000, Loss: 0.051044\n",
      "Epoch: 590/20000, Loss: 0.049769\n",
      "Epoch: 600/20000, Loss: 0.048565\n",
      "Epoch: 610/20000, Loss: 0.047429\n",
      "Epoch: 620/20000, Loss: 0.046357\n",
      "Epoch: 630/20000, Loss: 0.045346\n",
      "Epoch: 640/20000, Loss: 0.044393\n",
      "Epoch: 650/20000, Loss: 0.043494\n",
      "Epoch: 660/20000, Loss: 0.042649\n",
      "Epoch: 670/20000, Loss: 0.041852\n",
      "Epoch: 680/20000, Loss: 0.041103\n",
      "Epoch: 690/20000, Loss: 0.040397\n",
      "Epoch: 700/20000, Loss: 0.039734\n",
      "Epoch: 710/20000, Loss: 0.039111\n",
      "Epoch: 720/20000, Loss: 0.038526\n",
      "Epoch: 730/20000, Loss: 0.037976\n",
      "Epoch: 740/20000, Loss: 0.037460\n",
      "Epoch: 750/20000, Loss: 0.036975\n",
      "Epoch: 760/20000, Loss: 0.036521\n",
      "Epoch: 770/20000, Loss: 0.036096\n",
      "Epoch: 780/20000, Loss: 0.035697\n",
      "Epoch: 790/20000, Loss: 0.035323\n",
      "Epoch: 800/20000, Loss: 0.034973\n",
      "Epoch: 810/20000, Loss: 0.034646\n",
      "Epoch: 820/20000, Loss: 0.034340\n",
      "Epoch: 830/20000, Loss: 0.034054\n",
      "Epoch: 840/20000, Loss: 0.033787\n",
      "Epoch: 850/20000, Loss: 0.033537\n",
      "Epoch: 860/20000, Loss: 0.033304\n",
      "Epoch: 870/20000, Loss: 0.033087\n",
      "Epoch: 880/20000, Loss: 0.032885\n",
      "Epoch: 890/20000, Loss: 0.032696\n",
      "Epoch: 900/20000, Loss: 0.032520\n",
      "Epoch: 910/20000, Loss: 0.032356\n",
      "Epoch: 920/20000, Loss: 0.032204\n",
      "Epoch: 930/20000, Loss: 0.032062\n",
      "Epoch: 940/20000, Loss: 0.031930\n",
      "Epoch: 950/20000, Loss: 0.031808\n",
      "Epoch: 960/20000, Loss: 0.031694\n",
      "Epoch: 970/20000, Loss: 0.031589\n",
      "Epoch: 980/20000, Loss: 0.031491\n",
      "Epoch: 990/20000, Loss: 0.031400\n",
      "Epoch: 1000/20000, Loss: 0.031316\n",
      "Epoch: 1010/20000, Loss: 0.031238\n",
      "Epoch: 1020/20000, Loss: 0.031166\n",
      "Epoch: 1030/20000, Loss: 0.031099\n",
      "Epoch: 1040/20000, Loss: 0.031038\n",
      "Epoch: 1050/20000, Loss: 0.030981\n",
      "Epoch: 1060/20000, Loss: 0.030928\n",
      "Epoch: 1070/20000, Loss: 0.030879\n",
      "Epoch: 1080/20000, Loss: 0.030834\n",
      "Epoch: 1090/20000, Loss: 0.030793\n",
      "Epoch: 1100/20000, Loss: 0.030755\n",
      "Epoch: 1110/20000, Loss: 0.030720\n",
      "Epoch: 1120/20000, Loss: 0.030688\n",
      "Epoch: 1130/20000, Loss: 0.030658\n",
      "Epoch: 1140/20000, Loss: 0.030631\n",
      "Epoch: 1150/20000, Loss: 0.030605\n",
      "Epoch: 1160/20000, Loss: 0.030582\n",
      "Epoch: 1170/20000, Loss: 0.030561\n",
      "Epoch: 1180/20000, Loss: 0.030542\n",
      "Epoch: 1190/20000, Loss: 0.030524\n",
      "Epoch: 1200/20000, Loss: 0.030508\n",
      "Epoch: 1210/20000, Loss: 0.030493\n",
      "Epoch: 1220/20000, Loss: 0.030479\n",
      "Epoch: 1230/20000, Loss: 0.030466\n",
      "Epoch: 1240/20000, Loss: 0.030455\n",
      "Epoch: 1250/20000, Loss: 0.030444\n",
      "Epoch: 1260/20000, Loss: 0.030435\n",
      "Epoch: 1270/20000, Loss: 0.030426\n",
      "Epoch: 1280/20000, Loss: 0.030418\n",
      "Epoch: 1290/20000, Loss: 0.030411\n",
      "Epoch: 1300/20000, Loss: 0.030404\n",
      "Epoch: 1310/20000, Loss: 0.030398\n",
      "Epoch: 1320/20000, Loss: 0.030393\n",
      "Epoch: 1330/20000, Loss: 0.030388\n",
      "Epoch: 1340/20000, Loss: 0.030383\n",
      "Epoch: 1350/20000, Loss: 0.030379\n",
      "Epoch: 1360/20000, Loss: 0.030375\n",
      "Epoch: 1370/20000, Loss: 0.030372\n",
      "Epoch: 1380/20000, Loss: 0.030368\n",
      "Epoch: 1390/20000, Loss: 0.030366\n",
      "Epoch: 1400/20000, Loss: 0.030363\n",
      "Epoch: 1410/20000, Loss: 0.030361\n",
      "Epoch: 1420/20000, Loss: 0.030358\n",
      "Epoch: 1430/20000, Loss: 0.030356\n",
      "Epoch: 1440/20000, Loss: 0.030355\n",
      "Epoch: 1450/20000, Loss: 0.030353\n",
      "Epoch: 1460/20000, Loss: 0.030352\n",
      "Epoch: 1470/20000, Loss: 0.030350\n",
      "Epoch: 1480/20000, Loss: 0.030349\n",
      "Epoch: 1490/20000, Loss: 0.030348\n",
      "Epoch: 1500/20000, Loss: 0.030347\n",
      "Epoch: 1510/20000, Loss: 0.030346\n",
      "Epoch: 1520/20000, Loss: 0.030345\n",
      "Epoch: 1530/20000, Loss: 0.030344\n",
      "Epoch: 1540/20000, Loss: 0.030343\n",
      "Epoch: 1550/20000, Loss: 0.030342\n",
      "Epoch: 1560/20000, Loss: 0.030342\n",
      "Epoch: 1570/20000, Loss: 0.030341\n",
      "Epoch: 1580/20000, Loss: 0.030340\n",
      "Epoch: 1590/20000, Loss: 0.030339\n",
      "Epoch: 1600/20000, Loss: 0.030339\n",
      "Epoch: 1610/20000, Loss: 0.030338\n",
      "Epoch: 1620/20000, Loss: 0.030337\n",
      "Epoch: 1630/20000, Loss: 0.030336\n",
      "Epoch: 1640/20000, Loss: 0.030335\n",
      "Epoch: 1650/20000, Loss: 0.030334\n",
      "Epoch: 1660/20000, Loss: 0.030333\n",
      "Epoch: 1670/20000, Loss: 0.030331\n",
      "Epoch: 1680/20000, Loss: 0.030329\n",
      "Epoch: 1690/20000, Loss: 0.030326\n",
      "Epoch: 1700/20000, Loss: 0.030316\n",
      "Epoch: 1710/20000, Loss: 0.030153\n",
      "Epoch: 1720/20000, Loss: 0.030074\n",
      "Epoch: 1730/20000, Loss: 0.030002\n",
      "Epoch: 1740/20000, Loss: 0.029907\n",
      "Epoch: 1750/20000, Loss: 0.029785\n",
      "Epoch: 1760/20000, Loss: 0.029641\n",
      "Epoch: 1770/20000, Loss: 0.029483\n",
      "Epoch: 1780/20000, Loss: 0.029309\n",
      "Epoch: 1790/20000, Loss: 0.029118\n",
      "Epoch: 1800/20000, Loss: 0.028914\n",
      "Epoch: 1810/20000, Loss: 0.028700\n",
      "Epoch: 1820/20000, Loss: 0.028481\n",
      "Epoch: 1830/20000, Loss: 0.028259\n",
      "Epoch: 1840/20000, Loss: 0.028036\n",
      "Epoch: 1850/20000, Loss: 0.027812\n",
      "Epoch: 1860/20000, Loss: 0.027590\n",
      "Epoch: 1870/20000, Loss: 0.027370\n",
      "Epoch: 1880/20000, Loss: 0.027152\n",
      "Epoch: 1890/20000, Loss: 0.026936\n",
      "Epoch: 1900/20000, Loss: 0.026724\n",
      "Epoch: 1910/20000, Loss: 0.026514\n",
      "Epoch: 1920/20000, Loss: 0.026307\n",
      "Epoch: 1930/20000, Loss: 0.026104\n",
      "Epoch: 1940/20000, Loss: 0.025904\n",
      "Epoch: 1950/20000, Loss: 0.025707\n",
      "Epoch: 1960/20000, Loss: 0.025513\n",
      "Epoch: 1970/20000, Loss: 0.025323\n",
      "Epoch: 1980/20000, Loss: 0.025135\n",
      "Epoch: 1990/20000, Loss: 0.024951\n",
      "Epoch: 2000/20000, Loss: 0.024769\n",
      "Epoch: 2010/20000, Loss: 0.024590\n",
      "Epoch: 2020/20000, Loss: 0.024414\n",
      "Epoch: 2030/20000, Loss: 0.024241\n",
      "Epoch: 2040/20000, Loss: 0.024070\n",
      "Epoch: 2050/20000, Loss: 0.023901\n",
      "Epoch: 2060/20000, Loss: 0.023735\n",
      "Epoch: 2070/20000, Loss: 0.023572\n",
      "Epoch: 2080/20000, Loss: 0.023410\n",
      "Epoch: 2090/20000, Loss: 0.023251\n",
      "Epoch: 2100/20000, Loss: 0.023094\n",
      "Epoch: 2110/20000, Loss: 0.022939\n",
      "Epoch: 2120/20000, Loss: 0.022786\n",
      "Epoch: 2130/20000, Loss: 0.022636\n",
      "Epoch: 2140/20000, Loss: 0.022487\n",
      "Epoch: 2150/20000, Loss: 0.022339\n",
      "Epoch: 2160/20000, Loss: 0.022194\n",
      "Epoch: 2170/20000, Loss: 0.022050\n",
      "Epoch: 2180/20000, Loss: 0.021908\n",
      "Epoch: 2190/20000, Loss: 0.021768\n",
      "Epoch: 2200/20000, Loss: 0.021629\n",
      "Epoch: 2210/20000, Loss: 0.021492\n",
      "Epoch: 2220/20000, Loss: 0.021357\n",
      "Epoch: 2230/20000, Loss: 0.021223\n",
      "Epoch: 2240/20000, Loss: 0.021090\n",
      "Epoch: 2250/20000, Loss: 0.020959\n",
      "Epoch: 2260/20000, Loss: 0.020829\n",
      "Epoch: 2270/20000, Loss: 0.020700\n",
      "Epoch: 2280/20000, Loss: 0.020573\n",
      "Epoch: 2290/20000, Loss: 0.020447\n",
      "Epoch: 2300/20000, Loss: 0.020323\n",
      "Epoch: 2310/20000, Loss: 0.020199\n",
      "Epoch: 2320/20000, Loss: 0.020077\n",
      "Epoch: 2330/20000, Loss: 0.019956\n",
      "Epoch: 2340/20000, Loss: 0.019836\n",
      "Epoch: 2350/20000, Loss: 0.019717\n",
      "Epoch: 2360/20000, Loss: 0.019600\n",
      "Epoch: 2370/20000, Loss: 0.019483\n",
      "Epoch: 2380/20000, Loss: 0.019368\n",
      "Epoch: 2390/20000, Loss: 0.019253\n",
      "Epoch: 2400/20000, Loss: 0.019140\n",
      "Epoch: 2410/20000, Loss: 0.019027\n",
      "Epoch: 2420/20000, Loss: 0.018916\n",
      "Epoch: 2430/20000, Loss: 0.018805\n",
      "Epoch: 2440/20000, Loss: 0.018696\n",
      "Epoch: 2450/20000, Loss: 0.018587\n",
      "Epoch: 2460/20000, Loss: 0.018479\n",
      "Epoch: 2470/20000, Loss: 0.018373\n",
      "Epoch: 2480/20000, Loss: 0.018267\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 2490/20000, Loss: 0.018162\n",
      "Epoch: 2500/20000, Loss: 0.018057\n",
      "Epoch: 2510/20000, Loss: 0.017954\n",
      "Epoch: 2520/20000, Loss: 0.017851\n",
      "Epoch: 2530/20000, Loss: 0.017750\n",
      "Epoch: 2540/20000, Loss: 0.017649\n",
      "Epoch: 2550/20000, Loss: 0.017548\n",
      "Epoch: 2560/20000, Loss: 0.017449\n",
      "Epoch: 2570/20000, Loss: 0.017350\n",
      "Epoch: 2580/20000, Loss: 0.017252\n",
      "Epoch: 2590/20000, Loss: 0.017155\n",
      "Epoch: 2600/20000, Loss: 0.017058\n",
      "Epoch: 2610/20000, Loss: 0.016962\n",
      "Epoch: 2620/20000, Loss: 0.016867\n",
      "Epoch: 2630/20000, Loss: 0.016773\n",
      "Epoch: 2640/20000, Loss: 0.016679\n",
      "Epoch: 2650/20000, Loss: 0.016586\n",
      "Epoch: 2660/20000, Loss: 0.016493\n",
      "Epoch: 2670/20000, Loss: 0.016401\n",
      "Epoch: 2680/20000, Loss: 0.016310\n",
      "Epoch: 2690/20000, Loss: 0.016220\n",
      "Epoch: 2700/20000, Loss: 0.016130\n",
      "Epoch: 2710/20000, Loss: 0.016040\n",
      "Epoch: 2720/20000, Loss: 0.015952\n",
      "Epoch: 2730/20000, Loss: 0.015863\n",
      "Epoch: 2740/20000, Loss: 0.015776\n",
      "Epoch: 2750/20000, Loss: 0.015689\n",
      "Epoch: 2760/20000, Loss: 0.015602\n",
      "Epoch: 2770/20000, Loss: 0.015517\n",
      "Epoch: 2780/20000, Loss: 0.015431\n",
      "Epoch: 2790/20000, Loss: 0.015347\n",
      "Epoch: 2800/20000, Loss: 0.015262\n",
      "Epoch: 2810/20000, Loss: 0.015179\n",
      "Epoch: 2820/20000, Loss: 0.015096\n",
      "Epoch: 2830/20000, Loss: 0.015013\n",
      "Epoch: 2840/20000, Loss: 0.014931\n",
      "Epoch: 2850/20000, Loss: 0.014850\n",
      "Epoch: 2860/20000, Loss: 0.014769\n",
      "Epoch: 2870/20000, Loss: 0.014688\n",
      "Epoch: 2880/20000, Loss: 0.014608\n",
      "Epoch: 2890/20000, Loss: 0.014529\n",
      "Epoch: 2900/20000, Loss: 0.014450\n",
      "Epoch: 2910/20000, Loss: 0.014371\n",
      "Epoch: 2920/20000, Loss: 0.014293\n",
      "Epoch: 2930/20000, Loss: 0.014216\n",
      "Epoch: 2940/20000, Loss: 0.014139\n",
      "Epoch: 2950/20000, Loss: 0.014062\n",
      "Epoch: 2960/20000, Loss: 0.013986\n",
      "Epoch: 2970/20000, Loss: 0.013910\n",
      "Epoch: 2980/20000, Loss: 0.013835\n",
      "Epoch: 2990/20000, Loss: 0.013760\n",
      "Epoch: 3000/20000, Loss: 0.013686\n",
      "Epoch: 3010/20000, Loss: 0.013612\n",
      "Epoch: 3020/20000, Loss: 0.013539\n",
      "Epoch: 3030/20000, Loss: 0.013466\n",
      "Epoch: 3040/20000, Loss: 0.013393\n",
      "Epoch: 3050/20000, Loss: 0.013321\n",
      "Epoch: 3060/20000, Loss: 0.013249\n",
      "Epoch: 3070/20000, Loss: 0.013178\n",
      "Epoch: 3080/20000, Loss: 0.013107\n",
      "Epoch: 3090/20000, Loss: 0.013037\n",
      "Epoch: 3100/20000, Loss: 0.012967\n",
      "Epoch: 3110/20000, Loss: 0.012897\n",
      "Epoch: 3120/20000, Loss: 0.012828\n",
      "Epoch: 3130/20000, Loss: 0.012759\n",
      "Epoch: 3140/20000, Loss: 0.012691\n",
      "Epoch: 3150/20000, Loss: 0.012623\n",
      "Epoch: 3160/20000, Loss: 0.012555\n",
      "Epoch: 3170/20000, Loss: 0.012488\n",
      "Epoch: 3180/20000, Loss: 0.012421\n",
      "Epoch: 3190/20000, Loss: 0.012356\n",
      "Epoch: 3200/20000, Loss: 0.012289\n",
      "Epoch: 3210/20000, Loss: 0.012223\n",
      "Epoch: 3220/20000, Loss: 0.012158\n",
      "Epoch: 3230/20000, Loss: 0.012093\n",
      "Epoch: 3240/20000, Loss: 0.012028\n",
      "Epoch: 3250/20000, Loss: 0.011964\n",
      "Epoch: 3260/20000, Loss: 0.011900\n",
      "Epoch: 3270/20000, Loss: 0.011837\n",
      "Epoch: 3280/20000, Loss: 0.011774\n",
      "Epoch: 3290/20000, Loss: 0.011711\n",
      "Epoch: 3300/20000, Loss: 0.011648\n",
      "Epoch: 3310/20000, Loss: 0.011586\n",
      "Epoch: 3320/20000, Loss: 0.011525\n",
      "Epoch: 3330/20000, Loss: 0.011463\n",
      "Epoch: 3340/20000, Loss: 0.011402\n",
      "Epoch: 3350/20000, Loss: 0.011341\n",
      "Epoch: 3360/20000, Loss: 0.011281\n",
      "Epoch: 3370/20000, Loss: 0.011221\n",
      "Epoch: 3380/20000, Loss: 0.011161\n",
      "Epoch: 3390/20000, Loss: 0.011102\n",
      "Epoch: 3400/20000, Loss: 0.011042\n",
      "Epoch: 3410/20000, Loss: 0.010984\n",
      "Epoch: 3420/20000, Loss: 0.010925\n",
      "Epoch: 3430/20000, Loss: 0.010867\n",
      "Epoch: 3440/20000, Loss: 0.010809\n",
      "Epoch: 3450/20000, Loss: 0.010750\n",
      "Epoch: 3460/20000, Loss: 0.010689\n",
      "Epoch: 3470/20000, Loss: 0.010608\n",
      "Epoch: 3480/20000, Loss: 0.010215\n",
      "Epoch: 3490/20000, Loss: 0.009965\n",
      "Epoch: 3500/20000, Loss: 0.009729\n",
      "Epoch: 3510/20000, Loss: 0.009500\n",
      "Epoch: 3520/20000, Loss: 0.009285\n",
      "Epoch: 3530/20000, Loss: 0.009087\n",
      "Epoch: 3540/20000, Loss: 0.008906\n",
      "Epoch: 3550/20000, Loss: 0.008739\n",
      "Epoch: 3560/20000, Loss: 0.008584\n",
      "Epoch: 3570/20000, Loss: 0.008439\n",
      "Epoch: 3580/20000, Loss: 0.008302\n",
      "Epoch: 3590/20000, Loss: 0.008172\n",
      "Epoch: 3600/20000, Loss: 0.008048\n",
      "Epoch: 3610/20000, Loss: 0.007929\n",
      "Epoch: 3620/20000, Loss: 0.007816\n",
      "Epoch: 3630/20000, Loss: 0.007704\n",
      "Epoch: 3640/20000, Loss: 0.007596\n",
      "Epoch: 3650/20000, Loss: 0.007492\n",
      "Epoch: 3660/20000, Loss: 0.007391\n",
      "Epoch: 3670/20000, Loss: 0.007293\n",
      "Epoch: 3680/20000, Loss: 0.007197\n",
      "Epoch: 3690/20000, Loss: 0.007104\n",
      "Epoch: 3700/20000, Loss: 0.007013\n",
      "Epoch: 3710/20000, Loss: 0.006924\n",
      "Epoch: 3720/20000, Loss: 0.006837\n",
      "Epoch: 3730/20000, Loss: 0.006751\n",
      "Epoch: 3740/20000, Loss: 0.006668\n",
      "Epoch: 3750/20000, Loss: 0.006586\n",
      "Epoch: 3760/20000, Loss: 0.006505\n",
      "Epoch: 3770/20000, Loss: 0.006429\n",
      "Epoch: 3780/20000, Loss: 0.006349\n",
      "Epoch: 3790/20000, Loss: 0.006273\n",
      "Epoch: 3800/20000, Loss: 0.006198\n",
      "Epoch: 3810/20000, Loss: 0.006125\n",
      "Epoch: 3820/20000, Loss: 0.006053\n",
      "Epoch: 3830/20000, Loss: 0.005982\n",
      "Epoch: 3840/20000, Loss: 0.005913\n",
      "Epoch: 3850/20000, Loss: 0.005845\n",
      "Epoch: 3860/20000, Loss: 0.005777\n",
      "Epoch: 3870/20000, Loss: 0.005711\n",
      "Epoch: 3880/20000, Loss: 0.005646\n",
      "Epoch: 3890/20000, Loss: 0.005583\n",
      "Epoch: 3900/20000, Loss: 0.005520\n",
      "Epoch: 3910/20000, Loss: 0.005458\n",
      "Epoch: 3920/20000, Loss: 0.005397\n",
      "Epoch: 3930/20000, Loss: 0.005338\n",
      "Epoch: 3940/20000, Loss: 0.005279\n",
      "Epoch: 3950/20000, Loss: 0.005221\n",
      "Epoch: 3960/20000, Loss: 0.005163\n",
      "Epoch: 3970/20000, Loss: 0.005107\n",
      "Epoch: 3980/20000, Loss: 0.005052\n",
      "Epoch: 3990/20000, Loss: 0.004997\n",
      "Epoch: 4000/20000, Loss: 0.004944\n",
      "Epoch: 4010/20000, Loss: 0.004891\n",
      "Epoch: 4020/20000, Loss: 0.004839\n",
      "Epoch: 4030/20000, Loss: 0.004788\n",
      "Epoch: 4040/20000, Loss: 0.004737\n",
      "Epoch: 4050/20000, Loss: 0.004687\n",
      "Epoch: 4060/20000, Loss: 0.004638\n",
      "Epoch: 4070/20000, Loss: 0.004590\n",
      "Epoch: 4080/20000, Loss: 0.004542\n",
      "Epoch: 4090/20000, Loss: 0.004495\n",
      "Epoch: 4100/20000, Loss: 0.004448\n",
      "Epoch: 4110/20000, Loss: 0.004403\n",
      "Epoch: 4120/20000, Loss: 0.004357\n",
      "Epoch: 4130/20000, Loss: 0.004313\n",
      "Epoch: 4140/20000, Loss: 0.004270\n",
      "Epoch: 4150/20000, Loss: 0.004225\n",
      "Epoch: 4160/20000, Loss: 0.004182\n",
      "Epoch: 4170/20000, Loss: 0.004140\n",
      "Epoch: 4180/20000, Loss: 0.004098\n",
      "Epoch: 4190/20000, Loss: 0.004056\n",
      "Epoch: 4200/20000, Loss: 0.004015\n",
      "Epoch: 4210/20000, Loss: 0.003975\n",
      "Epoch: 4220/20000, Loss: 0.003935\n",
      "Epoch: 4230/20000, Loss: 0.003886\n",
      "Epoch: 4240/20000, Loss: 0.003668\n",
      "Epoch: 4250/20000, Loss: 0.003567\n",
      "Epoch: 4260/20000, Loss: 0.003469\n",
      "Epoch: 4270/20000, Loss: 0.003379\n",
      "Epoch: 4280/20000, Loss: 0.003296\n",
      "Epoch: 4290/20000, Loss: 0.003216\n",
      "Epoch: 4300/20000, Loss: 0.003139\n",
      "Epoch: 4310/20000, Loss: 0.003064\n",
      "Epoch: 4320/20000, Loss: 0.002992\n",
      "Epoch: 4330/20000, Loss: 0.002922\n",
      "Epoch: 4340/20000, Loss: 0.002855\n",
      "Epoch: 4350/20000, Loss: 0.002791\n",
      "Epoch: 4360/20000, Loss: 0.002732\n",
      "Epoch: 4370/20000, Loss: 0.002673\n",
      "Epoch: 4380/20000, Loss: 0.002617\n",
      "Epoch: 4390/20000, Loss: 0.002563\n",
      "Epoch: 4400/20000, Loss: 0.002511\n",
      "Epoch: 4410/20000, Loss: 0.002462\n",
      "Epoch: 4420/20000, Loss: 0.002414\n",
      "Epoch: 4430/20000, Loss: 0.002368\n",
      "Epoch: 4440/20000, Loss: 0.002323\n",
      "Epoch: 4450/20000, Loss: 0.002280\n",
      "Epoch: 4460/20000, Loss: 0.002238\n",
      "Epoch: 4470/20000, Loss: 0.002197\n",
      "Epoch: 4480/20000, Loss: 0.002158\n",
      "Epoch: 4490/20000, Loss: 0.002122\n",
      "Epoch: 4500/20000, Loss: 0.002083\n",
      "Epoch: 4510/20000, Loss: 0.002047\n",
      "Epoch: 4520/20000, Loss: 0.002012\n",
      "Epoch: 4530/20000, Loss: 0.001977\n",
      "Epoch: 4540/20000, Loss: 0.001944\n",
      "Epoch: 4550/20000, Loss: 0.001910\n",
      "Epoch: 4560/20000, Loss: 0.001854\n",
      "Epoch: 4570/20000, Loss: 0.001794\n",
      "Epoch: 4580/20000, Loss: 0.001748\n",
      "Epoch: 4590/20000, Loss: 0.001707\n",
      "Epoch: 4600/20000, Loss: 0.001666\n",
      "Epoch: 4610/20000, Loss: 0.001628\n",
      "Epoch: 4620/20000, Loss: 0.001592\n",
      "Epoch: 4630/20000, Loss: 0.001555\n",
      "Epoch: 4640/20000, Loss: 0.001520\n",
      "Epoch: 4650/20000, Loss: 0.001485\n",
      "Epoch: 4660/20000, Loss: 0.001451\n",
      "Epoch: 4670/20000, Loss: 0.001417\n",
      "Epoch: 4680/20000, Loss: 0.001384\n",
      "Epoch: 4690/20000, Loss: 0.001351\n",
      "Epoch: 4700/20000, Loss: 0.001319\n",
      "Epoch: 4710/20000, Loss: 0.001288\n",
      "Epoch: 4720/20000, Loss: 0.001257\n",
      "Epoch: 4730/20000, Loss: 0.001226\n",
      "Epoch: 4740/20000, Loss: 0.001196\n",
      "Epoch: 4750/20000, Loss: 0.001167\n",
      "Epoch: 4760/20000, Loss: 0.001142\n",
      "Epoch: 4770/20000, Loss: 0.001111\n",
      "Epoch: 4780/20000, Loss: 0.001083\n",
      "Epoch: 4790/20000, Loss: 0.001056\n",
      "Epoch: 4800/20000, Loss: 0.001030\n",
      "Epoch: 4810/20000, Loss: 0.001005\n",
      "Epoch: 4820/20000, Loss: 0.000980\n",
      "Epoch: 4830/20000, Loss: 0.000957\n",
      "Epoch: 4840/20000, Loss: 0.000934\n",
      "Epoch: 4850/20000, Loss: 0.000912\n",
      "Epoch: 4860/20000, Loss: 0.000890\n",
      "Epoch: 4870/20000, Loss: 0.000870\n",
      "Epoch: 4880/20000, Loss: 0.000850\n",
      "Epoch: 4890/20000, Loss: 0.000831\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 4900/20000, Loss: 0.000812\n",
      "Epoch: 4910/20000, Loss: 0.000794\n",
      "Epoch: 4920/20000, Loss: 0.000777\n",
      "Epoch: 4930/20000, Loss: 0.000760\n",
      "Epoch: 4940/20000, Loss: 0.000744\n",
      "Epoch: 4950/20000, Loss: 0.000732\n",
      "Epoch: 4960/20000, Loss: 0.000714\n",
      "Epoch: 4970/20000, Loss: 0.000700\n",
      "Epoch: 4980/20000, Loss: 0.000685\n",
      "Epoch: 4990/20000, Loss: 0.000672\n",
      "Epoch: 5000/20000, Loss: 0.000658\n",
      "Epoch: 5010/20000, Loss: 0.000646\n",
      "Epoch: 5020/20000, Loss: 0.000633\n",
      "Epoch: 5030/20000, Loss: 0.000621\n",
      "Epoch: 5040/20000, Loss: 0.000610\n",
      "Epoch: 5050/20000, Loss: 0.000598\n",
      "Epoch: 5060/20000, Loss: 0.000587\n",
      "Epoch: 5070/20000, Loss: 0.000577\n",
      "Epoch: 5080/20000, Loss: 0.000566\n",
      "Epoch: 5090/20000, Loss: 0.000556\n",
      "Epoch: 5100/20000, Loss: 0.000546\n",
      "Epoch: 5110/20000, Loss: 0.000537\n",
      "Epoch: 5120/20000, Loss: 0.000527\n",
      "Epoch: 5130/20000, Loss: 0.000518\n",
      "Epoch: 5140/20000, Loss: 0.000509\n",
      "Epoch: 5150/20000, Loss: 0.000501\n",
      "Epoch: 5160/20000, Loss: 0.000492\n",
      "Epoch: 5170/20000, Loss: 0.000484\n",
      "Epoch: 5180/20000, Loss: 0.000477\n",
      "Epoch: 5190/20000, Loss: 0.000471\n",
      "Epoch: 5200/20000, Loss: 0.000461\n",
      "Epoch: 5210/20000, Loss: 0.000453\n",
      "Epoch: 5220/20000, Loss: 0.000446\n",
      "Epoch: 5230/20000, Loss: 0.000439\n",
      "Epoch: 5240/20000, Loss: 0.000432\n",
      "Epoch: 5250/20000, Loss: 0.000425\n",
      "Epoch: 5260/20000, Loss: 0.000418\n",
      "Epoch: 5270/20000, Loss: 0.000412\n",
      "Epoch: 5280/20000, Loss: 0.000406\n",
      "Epoch: 5290/20000, Loss: 0.000399\n",
      "Epoch: 5300/20000, Loss: 0.000393\n",
      "Epoch: 5310/20000, Loss: 0.000387\n",
      "Epoch: 5320/20000, Loss: 0.000381\n",
      "Epoch: 5330/20000, Loss: 0.000376\n",
      "Epoch: 5340/20000, Loss: 0.000370\n",
      "Epoch: 5350/20000, Loss: 0.000365\n",
      "Epoch: 5360/20000, Loss: 0.000359\n",
      "Epoch: 5370/20000, Loss: 0.000354\n",
      "Epoch: 5380/20000, Loss: 0.000349\n",
      "Epoch: 5390/20000, Loss: 0.000344\n",
      "Epoch: 5400/20000, Loss: 0.000339\n",
      "Epoch: 5410/20000, Loss: 0.000334\n",
      "Epoch: 5420/20000, Loss: 0.000333\n",
      "Epoch: 5430/20000, Loss: 0.000326\n",
      "Epoch: 5440/20000, Loss: 0.000320\n",
      "Epoch: 5450/20000, Loss: 0.000316\n",
      "Epoch: 5460/20000, Loss: 0.000311\n",
      "Epoch: 5470/20000, Loss: 0.000307\n",
      "Epoch: 5480/20000, Loss: 0.000303\n",
      "Epoch: 5490/20000, Loss: 0.000298\n",
      "Epoch: 5500/20000, Loss: 0.000294\n",
      "Epoch: 5510/20000, Loss: 0.000290\n",
      "Epoch: 5520/20000, Loss: 0.000286\n",
      "Epoch: 5530/20000, Loss: 0.000282\n",
      "Epoch: 5540/20000, Loss: 0.000279\n",
      "Epoch: 5550/20000, Loss: 0.000275\n",
      "Epoch: 5560/20000, Loss: 0.000271\n",
      "Epoch: 5570/20000, Loss: 0.000268\n",
      "Epoch: 5580/20000, Loss: 0.000264\n",
      "Epoch: 5590/20000, Loss: 0.000261\n",
      "Epoch: 5600/20000, Loss: 0.000257\n",
      "Epoch: 5610/20000, Loss: 0.000254\n",
      "Epoch: 5620/20000, Loss: 0.000251\n",
      "Epoch: 5630/20000, Loss: 0.000247\n",
      "Epoch: 5640/20000, Loss: 0.000244\n",
      "Epoch: 5650/20000, Loss: 0.000243\n",
      "Epoch: 5660/20000, Loss: 0.000241\n",
      "Epoch: 5670/20000, Loss: 0.000236\n",
      "Epoch: 5680/20000, Loss: 0.000232\n",
      "Epoch: 5690/20000, Loss: 0.000229\n",
      "Epoch: 5700/20000, Loss: 0.000226\n",
      "Epoch: 5710/20000, Loss: 0.000223\n",
      "Epoch: 5720/20000, Loss: 0.000221\n",
      "Epoch: 5730/20000, Loss: 0.000218\n",
      "Epoch: 5740/20000, Loss: 0.000215\n",
      "Epoch: 5750/20000, Loss: 0.000213\n",
      "Epoch: 5760/20000, Loss: 0.000210\n",
      "Epoch: 5770/20000, Loss: 0.000207\n",
      "Epoch: 5780/20000, Loss: 0.000205\n",
      "Epoch: 5790/20000, Loss: 0.000203\n",
      "Epoch: 5800/20000, Loss: 0.000200\n",
      "Epoch: 5810/20000, Loss: 0.000198\n",
      "Epoch: 5820/20000, Loss: 0.000195\n",
      "Epoch: 5830/20000, Loss: 0.000193\n",
      "Epoch: 5840/20000, Loss: 0.000191\n",
      "Epoch: 5850/20000, Loss: 0.000189\n",
      "Epoch: 5860/20000, Loss: 0.000186\n",
      "Epoch: 5870/20000, Loss: 0.000184\n",
      "Epoch: 5880/20000, Loss: 0.000182\n",
      "Epoch: 5890/20000, Loss: 0.000180\n",
      "Epoch: 5900/20000, Loss: 0.000178\n",
      "Epoch: 5910/20000, Loss: 0.000178\n",
      "Epoch: 5920/20000, Loss: 0.000177\n",
      "Epoch: 5930/20000, Loss: 0.000173\n",
      "Epoch: 5940/20000, Loss: 0.000170\n",
      "Epoch: 5950/20000, Loss: 0.000168\n",
      "Epoch: 5960/20000, Loss: 0.000166\n",
      "Epoch: 5970/20000, Loss: 0.000164\n",
      "Epoch: 5980/20000, Loss: 0.000162\n",
      "Epoch: 5990/20000, Loss: 0.000161\n",
      "Epoch: 6000/20000, Loss: 0.000159\n",
      "Epoch: 6010/20000, Loss: 0.000157\n",
      "Epoch: 6020/20000, Loss: 0.000155\n",
      "Epoch: 6030/20000, Loss: 0.000154\n",
      "Epoch: 6040/20000, Loss: 0.000152\n",
      "Epoch: 6050/20000, Loss: 0.000150\n",
      "Epoch: 6060/20000, Loss: 0.000149\n",
      "Epoch: 6070/20000, Loss: 0.000147\n",
      "Epoch: 6080/20000, Loss: 0.000146\n",
      "Epoch: 6090/20000, Loss: 0.000144\n",
      "Epoch: 6100/20000, Loss: 0.000143\n",
      "Epoch: 6110/20000, Loss: 0.000141\n",
      "Epoch: 6120/20000, Loss: 0.000140\n",
      "Epoch: 6130/20000, Loss: 0.000138\n",
      "Epoch: 6140/20000, Loss: 0.000138\n",
      "Epoch: 6150/20000, Loss: 0.000138\n",
      "Epoch: 6160/20000, Loss: 0.000135\n",
      "Epoch: 6170/20000, Loss: 0.000133\n",
      "Epoch: 6180/20000, Loss: 0.000131\n",
      "Epoch: 6190/20000, Loss: 0.000130\n",
      "Epoch: 6200/20000, Loss: 0.000129\n",
      "Epoch: 6210/20000, Loss: 0.000127\n",
      "Epoch: 6220/20000, Loss: 0.000126\n",
      "Epoch: 6230/20000, Loss: 0.000125\n",
      "Epoch: 6240/20000, Loss: 0.000124\n",
      "Epoch: 6250/20000, Loss: 0.000122\n",
      "Epoch: 6260/20000, Loss: 0.000121\n",
      "Epoch: 6270/20000, Loss: 0.000120\n",
      "Epoch: 6280/20000, Loss: 0.000119\n",
      "Epoch: 6290/20000, Loss: 0.000118\n",
      "Epoch: 6300/20000, Loss: 0.000116\n",
      "Epoch: 6310/20000, Loss: 0.000115\n",
      "Epoch: 6320/20000, Loss: 0.000114\n",
      "Epoch: 6330/20000, Loss: 0.000113\n",
      "Epoch: 6340/20000, Loss: 0.000112\n",
      "Epoch: 6350/20000, Loss: 0.000111\n",
      "Epoch: 6360/20000, Loss: 0.000110\n",
      "Epoch: 6370/20000, Loss: 0.000109\n",
      "Epoch: 6380/20000, Loss: 0.000108\n",
      "Epoch: 6390/20000, Loss: 0.000107\n",
      "Epoch: 6400/20000, Loss: 0.000106\n",
      "Epoch: 6410/20000, Loss: 0.000105\n",
      "Epoch: 6420/20000, Loss: 0.000104\n",
      "Epoch: 6430/20000, Loss: 0.000103\n",
      "Epoch: 6440/20000, Loss: 0.000102\n",
      "Epoch: 6450/20000, Loss: 0.000101\n",
      "Epoch: 6460/20000, Loss: 0.000100\n",
      "Epoch: 6470/20000, Loss: 0.000099\n",
      "Epoch: 6480/20000, Loss: 0.000098\n",
      "Epoch: 6490/20000, Loss: 0.000097\n",
      "Epoch: 6500/20000, Loss: 0.000097\n",
      "Epoch: 6510/20000, Loss: 0.000096\n",
      "Epoch: 6520/20000, Loss: 0.000095\n",
      "Epoch: 6530/20000, Loss: 0.000094\n",
      "Epoch: 6540/20000, Loss: 0.000093\n",
      "Epoch: 6550/20000, Loss: 0.000092\n",
      "Epoch: 6560/20000, Loss: 0.000092\n",
      "Epoch: 6570/20000, Loss: 0.000091\n",
      "Epoch: 6580/20000, Loss: 0.000090\n",
      "Epoch: 6590/20000, Loss: 0.000089\n",
      "Epoch: 6600/20000, Loss: 0.000088\n",
      "Epoch: 6610/20000, Loss: 0.000088\n",
      "Epoch: 6620/20000, Loss: 0.000087\n",
      "Epoch: 6630/20000, Loss: 0.000087\n",
      "Epoch: 6640/20000, Loss: 0.000085\n",
      "Epoch: 6650/20000, Loss: 0.000085\n",
      "Epoch: 6660/20000, Loss: 0.000084\n",
      "Epoch: 6670/20000, Loss: 0.000083\n",
      "Epoch: 6680/20000, Loss: 0.000082\n",
      "Epoch: 6690/20000, Loss: 0.000082\n",
      "Epoch: 6700/20000, Loss: 0.000081\n",
      "Epoch: 6710/20000, Loss: 0.000080\n",
      "Epoch: 6720/20000, Loss: 0.000080\n",
      "Epoch: 6730/20000, Loss: 0.000079\n",
      "Epoch: 6740/20000, Loss: 0.000078\n",
      "Epoch: 6750/20000, Loss: 0.000078\n",
      "Epoch: 6760/20000, Loss: 0.000077\n",
      "Epoch: 6770/20000, Loss: 0.000076\n",
      "Epoch: 6780/20000, Loss: 0.000076\n",
      "Epoch: 6790/20000, Loss: 0.000075\n",
      "Epoch: 6800/20000, Loss: 0.000074\n",
      "Epoch: 6810/20000, Loss: 0.000074\n",
      "Epoch: 6820/20000, Loss: 0.000073\n",
      "Epoch: 6830/20000, Loss: 0.000073\n",
      "Epoch: 6840/20000, Loss: 0.000072\n",
      "Epoch: 6850/20000, Loss: 0.000071\n",
      "Epoch: 6860/20000, Loss: 0.000071\n",
      "Epoch: 6870/20000, Loss: 0.000070\n",
      "Epoch: 6880/20000, Loss: 0.000070\n",
      "Epoch: 6890/20000, Loss: 0.000069\n",
      "Epoch: 6900/20000, Loss: 0.000069\n",
      "Epoch: 6910/20000, Loss: 0.000068\n",
      "Epoch: 6920/20000, Loss: 0.000071\n",
      "Epoch: 6930/20000, Loss: 0.000070\n",
      "Epoch: 6940/20000, Loss: 0.000067\n",
      "Epoch: 6950/20000, Loss: 0.000066\n",
      "Epoch: 6960/20000, Loss: 0.000065\n",
      "Epoch: 6970/20000, Loss: 0.000065\n",
      "Epoch: 6980/20000, Loss: 0.000064\n",
      "Epoch: 6990/20000, Loss: 0.000064\n",
      "Epoch: 7000/20000, Loss: 0.000063\n",
      "Epoch: 7010/20000, Loss: 0.000063\n",
      "Epoch: 7020/20000, Loss: 0.000062\n",
      "Epoch: 7030/20000, Loss: 0.000062\n",
      "Epoch: 7040/20000, Loss: 0.000061\n",
      "Epoch: 7050/20000, Loss: 0.000061\n",
      "Epoch: 7060/20000, Loss: 0.000060\n",
      "Epoch: 7070/20000, Loss: 0.000060\n",
      "Epoch: 7080/20000, Loss: 0.000059\n",
      "Epoch: 7090/20000, Loss: 0.000059\n",
      "Epoch: 7100/20000, Loss: 0.000058\n",
      "Epoch: 7110/20000, Loss: 0.000058\n",
      "Epoch: 7120/20000, Loss: 0.000057\n",
      "Epoch: 7130/20000, Loss: 0.000057\n",
      "Epoch: 7140/20000, Loss: 0.000056\n",
      "Epoch: 7150/20000, Loss: 0.000056\n",
      "Epoch: 7160/20000, Loss: 0.000055\n",
      "Epoch: 7170/20000, Loss: 0.000055\n",
      "Epoch: 7180/20000, Loss: 0.000064\n",
      "Epoch: 7190/20000, Loss: 0.000055\n",
      "Epoch: 7200/20000, Loss: 0.000054\n",
      "Epoch: 7210/20000, Loss: 0.000054\n",
      "Epoch: 7220/20000, Loss: 0.000053\n",
      "Epoch: 7230/20000, Loss: 0.000053\n",
      "Epoch: 7240/20000, Loss: 0.000052\n",
      "Epoch: 7250/20000, Loss: 0.000052\n",
      "Epoch: 7260/20000, Loss: 0.000051\n",
      "Epoch: 7270/20000, Loss: 0.000051\n",
      "Epoch: 7280/20000, Loss: 0.000050\n",
      "Epoch: 7290/20000, Loss: 0.000050\n",
      "Epoch: 7300/20000, Loss: 0.000050\n",
      "Epoch: 7310/20000, Loss: 0.000049\n",
      "Epoch: 7320/20000, Loss: 0.000049\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 7330/20000, Loss: 0.000048\n",
      "Epoch: 7340/20000, Loss: 0.000048\n",
      "Epoch: 7350/20000, Loss: 0.000048\n",
      "Epoch: 7360/20000, Loss: 0.000047\n",
      "Epoch: 7370/20000, Loss: 0.000047\n",
      "Epoch: 7380/20000, Loss: 0.000047\n",
      "Epoch: 7390/20000, Loss: 0.000046\n",
      "Epoch: 7400/20000, Loss: 0.000046\n",
      "Epoch: 7410/20000, Loss: 0.000046\n",
      "Epoch: 7420/20000, Loss: 0.000045\n",
      "Epoch: 7430/20000, Loss: 0.000045\n",
      "Epoch: 7440/20000, Loss: 0.000044\n",
      "Epoch: 7450/20000, Loss: 0.000045\n",
      "Epoch: 7460/20000, Loss: 0.000044\n",
      "Epoch: 7470/20000, Loss: 0.000043\n",
      "Epoch: 7480/20000, Loss: 0.000043\n",
      "Epoch: 7490/20000, Loss: 0.000043\n",
      "Epoch: 7500/20000, Loss: 0.000043\n",
      "Epoch: 7510/20000, Loss: 0.000042\n",
      "Epoch: 7520/20000, Loss: 0.000042\n",
      "Epoch: 7530/20000, Loss: 0.000041\n",
      "Epoch: 7540/20000, Loss: 0.000041\n",
      "Epoch: 7550/20000, Loss: 0.000041\n",
      "Epoch: 7560/20000, Loss: 0.000040\n",
      "Epoch: 7570/20000, Loss: 0.000040\n",
      "Epoch: 7580/20000, Loss: 0.000040\n",
      "Epoch: 7590/20000, Loss: 0.000040\n",
      "Epoch: 7600/20000, Loss: 0.000039\n",
      "Epoch: 7610/20000, Loss: 0.000039\n",
      "Epoch: 7620/20000, Loss: 0.000039\n",
      "Epoch: 7630/20000, Loss: 0.000038\n",
      "Epoch: 7640/20000, Loss: 0.000038\n",
      "Epoch: 7650/20000, Loss: 0.000038\n",
      "Epoch: 7660/20000, Loss: 0.000037\n",
      "Epoch: 7670/20000, Loss: 0.000037\n",
      "Epoch: 7680/20000, Loss: 0.000037\n",
      "Epoch: 7690/20000, Loss: 0.000037\n",
      "Epoch: 7700/20000, Loss: 0.000036\n",
      "Epoch: 7710/20000, Loss: 0.000044\n",
      "Epoch: 7720/20000, Loss: 0.000036\n",
      "Epoch: 7730/20000, Loss: 0.000036\n",
      "Epoch: 7740/20000, Loss: 0.000035\n",
      "Epoch: 7750/20000, Loss: 0.000035\n",
      "Epoch: 7760/20000, Loss: 0.000035\n",
      "Epoch: 7770/20000, Loss: 0.000034\n",
      "Epoch: 7780/20000, Loss: 0.000034\n",
      "Epoch: 7790/20000, Loss: 0.000034\n",
      "Epoch: 7800/20000, Loss: 0.000034\n",
      "Epoch: 7810/20000, Loss: 0.000033\n",
      "Epoch: 7820/20000, Loss: 0.000033\n",
      "Epoch: 7830/20000, Loss: 0.000033\n",
      "Epoch: 7840/20000, Loss: 0.000033\n",
      "Epoch: 7850/20000, Loss: 0.000032\n",
      "Epoch: 7860/20000, Loss: 0.000032\n",
      "Epoch: 7870/20000, Loss: 0.000032\n",
      "Epoch: 7880/20000, Loss: 0.000032\n",
      "Epoch: 7890/20000, Loss: 0.000031\n",
      "Epoch: 7900/20000, Loss: 0.000031\n",
      "Epoch: 7910/20000, Loss: 0.000031\n",
      "Epoch: 7920/20000, Loss: 0.000031\n",
      "Epoch: 7930/20000, Loss: 0.000031\n",
      "Epoch: 7940/20000, Loss: 0.000030\n",
      "Epoch: 7950/20000, Loss: 0.000031\n",
      "Epoch: 7960/20000, Loss: 0.000030\n",
      "Epoch: 7970/20000, Loss: 0.000030\n",
      "Epoch: 7980/20000, Loss: 0.000029\n",
      "Epoch: 7990/20000, Loss: 0.000029\n",
      "Epoch: 8000/20000, Loss: 0.000029\n",
      "Epoch: 8010/20000, Loss: 0.000029\n",
      "Epoch: 8020/20000, Loss: 0.000029\n",
      "Epoch: 8030/20000, Loss: 0.000028\n",
      "Epoch: 8040/20000, Loss: 0.000028\n",
      "Epoch: 8050/20000, Loss: 0.000028\n",
      "Epoch: 8060/20000, Loss: 0.000028\n",
      "Epoch: 8070/20000, Loss: 0.000028\n",
      "Epoch: 8080/20000, Loss: 0.000027\n",
      "Epoch: 8090/20000, Loss: 0.000027\n",
      "Epoch: 8100/20000, Loss: 0.000027\n",
      "Epoch: 8110/20000, Loss: 0.000027\n",
      "Epoch: 8120/20000, Loss: 0.000027\n",
      "Epoch: 8130/20000, Loss: 0.000026\n",
      "Epoch: 8140/20000, Loss: 0.000026\n",
      "Epoch: 8150/20000, Loss: 0.000026\n",
      "Epoch: 8160/20000, Loss: 0.000026\n",
      "Epoch: 8170/20000, Loss: 0.000026\n",
      "Epoch: 8180/20000, Loss: 0.000025\n",
      "Epoch: 8190/20000, Loss: 0.000025\n",
      "Epoch: 8200/20000, Loss: 0.000025\n",
      "Epoch: 8210/20000, Loss: 0.000025\n",
      "Epoch: 8220/20000, Loss: 0.000032\n",
      "Epoch: 8230/20000, Loss: 0.000025\n",
      "Epoch: 8240/20000, Loss: 0.000025\n",
      "Epoch: 8250/20000, Loss: 0.000024\n",
      "Epoch: 8260/20000, Loss: 0.000024\n",
      "Epoch: 8270/20000, Loss: 0.000024\n",
      "Epoch: 8280/20000, Loss: 0.000024\n",
      "Epoch: 8290/20000, Loss: 0.000023\n",
      "Epoch: 8300/20000, Loss: 0.000023\n",
      "Epoch: 8310/20000, Loss: 0.000023\n",
      "Epoch: 8320/20000, Loss: 0.000023\n",
      "Epoch: 8330/20000, Loss: 0.000023\n",
      "Epoch: 8340/20000, Loss: 0.000023\n",
      "Epoch: 8350/20000, Loss: 0.000023\n",
      "Epoch: 8360/20000, Loss: 0.000022\n",
      "Epoch: 8370/20000, Loss: 0.000022\n",
      "Epoch: 8380/20000, Loss: 0.000022\n",
      "Epoch: 8390/20000, Loss: 0.000022\n",
      "Epoch: 8400/20000, Loss: 0.000022\n",
      "Epoch: 8410/20000, Loss: 0.000022\n",
      "Epoch: 8420/20000, Loss: 0.000021\n",
      "Epoch: 8430/20000, Loss: 0.000021\n",
      "Epoch: 8440/20000, Loss: 0.000021\n",
      "Epoch: 8450/20000, Loss: 0.000021\n",
      "Epoch: 8460/20000, Loss: 0.000022\n",
      "Epoch: 8470/20000, Loss: 0.000024\n",
      "Epoch: 8480/20000, Loss: 0.000021\n",
      "Epoch: 8490/20000, Loss: 0.000021\n",
      "Epoch: 8500/20000, Loss: 0.000020\n",
      "Epoch: 8510/20000, Loss: 0.000020\n",
      "Epoch: 8520/20000, Loss: 0.000020\n",
      "Epoch: 8530/20000, Loss: 0.000020\n",
      "Epoch: 8540/20000, Loss: 0.000020\n",
      "Epoch: 8550/20000, Loss: 0.000020\n",
      "Epoch: 8560/20000, Loss: 0.000020\n",
      "Epoch: 8570/20000, Loss: 0.000019\n",
      "Epoch: 8580/20000, Loss: 0.000019\n",
      "Epoch: 8590/20000, Loss: 0.000019\n",
      "Epoch: 8600/20000, Loss: 0.000019\n",
      "Epoch: 8610/20000, Loss: 0.000019\n",
      "Epoch: 8620/20000, Loss: 0.000019\n",
      "Epoch: 8630/20000, Loss: 0.000019\n",
      "Epoch: 8640/20000, Loss: 0.000019\n",
      "Epoch: 8650/20000, Loss: 0.000018\n",
      "Epoch: 8660/20000, Loss: 0.000018\n",
      "Epoch: 8670/20000, Loss: 0.000018\n",
      "Epoch: 8680/20000, Loss: 0.000018\n",
      "Epoch: 8690/20000, Loss: 0.000018\n",
      "Epoch: 8700/20000, Loss: 0.000018\n",
      "Epoch: 8710/20000, Loss: 0.000018\n",
      "Epoch: 8720/20000, Loss: 0.000018\n",
      "Epoch: 8730/20000, Loss: 0.000027\n",
      "Epoch: 8740/20000, Loss: 0.000019\n",
      "Epoch: 8750/20000, Loss: 0.000018\n",
      "Epoch: 8760/20000, Loss: 0.000017\n",
      "Epoch: 8770/20000, Loss: 0.000017\n",
      "Epoch: 8780/20000, Loss: 0.000017\n",
      "Epoch: 8790/20000, Loss: 0.000017\n",
      "Epoch: 8800/20000, Loss: 0.000017\n",
      "Epoch: 8810/20000, Loss: 0.000017\n",
      "Epoch: 8820/20000, Loss: 0.000016\n",
      "Epoch: 8830/20000, Loss: 0.000016\n",
      "Epoch: 8840/20000, Loss: 0.000016\n",
      "Epoch: 8850/20000, Loss: 0.000016\n",
      "Epoch: 8860/20000, Loss: 0.000016\n",
      "Epoch: 8870/20000, Loss: 0.000016\n",
      "Epoch: 8880/20000, Loss: 0.000016\n",
      "Epoch: 8890/20000, Loss: 0.000016\n",
      "Epoch: 8900/20000, Loss: 0.000016\n",
      "Epoch: 8910/20000, Loss: 0.000016\n",
      "Epoch: 8920/20000, Loss: 0.000016\n",
      "Epoch: 8930/20000, Loss: 0.000015\n",
      "Epoch: 8940/20000, Loss: 0.000015\n",
      "Epoch: 8950/20000, Loss: 0.000015\n",
      "Epoch: 8960/20000, Loss: 0.000015\n",
      "Epoch: 8970/20000, Loss: 0.000015\n",
      "Epoch: 8980/20000, Loss: 0.000015\n",
      "Epoch: 8990/20000, Loss: 0.000016\n",
      "Epoch: 9000/20000, Loss: 0.000016\n",
      "Epoch: 9010/20000, Loss: 0.000015\n",
      "Epoch: 9020/20000, Loss: 0.000015\n",
      "Epoch: 9030/20000, Loss: 0.000015\n",
      "Epoch: 9040/20000, Loss: 0.000014\n",
      "Epoch: 9050/20000, Loss: 0.000014\n",
      "Epoch: 9060/20000, Loss: 0.000014\n",
      "Epoch: 9070/20000, Loss: 0.000014\n",
      "Epoch: 9080/20000, Loss: 0.000014\n",
      "Epoch: 9090/20000, Loss: 0.000014\n",
      "Epoch: 9100/20000, Loss: 0.000014\n",
      "Epoch: 9110/20000, Loss: 0.000014\n",
      "Epoch: 9120/20000, Loss: 0.000014\n",
      "Epoch: 9130/20000, Loss: 0.000014\n",
      "Epoch: 9140/20000, Loss: 0.000014\n",
      "Epoch: 9150/20000, Loss: 0.000014\n",
      "Epoch: 9160/20000, Loss: 0.000013\n",
      "Epoch: 9170/20000, Loss: 0.000013\n",
      "Epoch: 9180/20000, Loss: 0.000013\n",
      "Epoch: 9190/20000, Loss: 0.000013\n",
      "Epoch: 9200/20000, Loss: 0.000013\n",
      "Epoch: 9210/20000, Loss: 0.000013\n",
      "Epoch: 9220/20000, Loss: 0.000013\n",
      "Epoch: 9230/20000, Loss: 0.000013\n",
      "Epoch: 9240/20000, Loss: 0.000013\n",
      "Epoch: 9250/20000, Loss: 0.000013\n",
      "Epoch: 9260/20000, Loss: 0.000024\n",
      "Epoch: 9270/20000, Loss: 0.000013\n",
      "Epoch: 9280/20000, Loss: 0.000013\n",
      "Epoch: 9290/20000, Loss: 0.000013\n",
      "Epoch: 9300/20000, Loss: 0.000013\n",
      "Epoch: 9310/20000, Loss: 0.000012\n",
      "Epoch: 9320/20000, Loss: 0.000012\n",
      "Epoch: 9330/20000, Loss: 0.000012\n",
      "Epoch: 9340/20000, Loss: 0.000012\n",
      "Epoch: 9350/20000, Loss: 0.000012\n",
      "Epoch: 9360/20000, Loss: 0.000012\n",
      "Epoch: 9370/20000, Loss: 0.000012\n",
      "Epoch: 9380/20000, Loss: 0.000012\n",
      "Epoch: 9390/20000, Loss: 0.000012\n",
      "Epoch: 9400/20000, Loss: 0.000012\n",
      "Epoch: 9410/20000, Loss: 0.000012\n",
      "Epoch: 9420/20000, Loss: 0.000012\n",
      "Epoch: 9430/20000, Loss: 0.000012\n",
      "Epoch: 9440/20000, Loss: 0.000012\n",
      "Epoch: 9450/20000, Loss: 0.000011\n",
      "Epoch: 9460/20000, Loss: 0.000011\n",
      "Epoch: 9470/20000, Loss: 0.000011\n",
      "Epoch: 9480/20000, Loss: 0.000011\n",
      "Epoch: 9490/20000, Loss: 0.000011\n",
      "Epoch: 9500/20000, Loss: 0.000011\n",
      "Epoch: 9510/20000, Loss: 0.000011\n",
      "Epoch: 9520/20000, Loss: 0.000013\n",
      "Epoch: 9530/20000, Loss: 0.000013\n",
      "Epoch: 9540/20000, Loss: 0.000011\n",
      "Epoch: 9550/20000, Loss: 0.000011\n",
      "Epoch: 9560/20000, Loss: 0.000011\n",
      "Epoch: 9570/20000, Loss: 0.000011\n",
      "Epoch: 9580/20000, Loss: 0.000011\n",
      "Epoch: 9590/20000, Loss: 0.000011\n",
      "Epoch: 9600/20000, Loss: 0.000011\n",
      "Epoch: 9610/20000, Loss: 0.000011\n",
      "Epoch: 9620/20000, Loss: 0.000011\n",
      "Epoch: 9630/20000, Loss: 0.000010\n",
      "Epoch: 9640/20000, Loss: 0.000010\n",
      "Epoch: 9650/20000, Loss: 0.000010\n",
      "Epoch: 9660/20000, Loss: 0.000010\n",
      "Epoch: 9670/20000, Loss: 0.000010\n",
      "Epoch: 9680/20000, Loss: 0.000010\n",
      "Epoch: 9690/20000, Loss: 0.000010\n",
      "Epoch: 9700/20000, Loss: 0.000010\n",
      "Epoch: 9710/20000, Loss: 0.000010\n",
      "Epoch: 9720/20000, Loss: 0.000010\n",
      "Epoch: 9730/20000, Loss: 0.000010\n",
      "Epoch: 9740/20000, Loss: 0.000010\n",
      "Epoch: 9750/20000, Loss: 0.000010\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 9760/20000, Loss: 0.000011\n",
      "Epoch: 9770/20000, Loss: 0.000011\n",
      "Epoch: 9780/20000, Loss: 0.000010\n",
      "Epoch: 9790/20000, Loss: 0.000010\n",
      "Epoch: 9800/20000, Loss: 0.000010\n",
      "Epoch: 9810/20000, Loss: 0.000010\n",
      "Epoch: 9820/20000, Loss: 0.000010\n",
      "Epoch: 9830/20000, Loss: 0.000010\n",
      "Epoch: 9840/20000, Loss: 0.000009\n",
      "Epoch: 9850/20000, Loss: 0.000009\n",
      "Epoch: 9860/20000, Loss: 0.000009\n",
      "Epoch: 9870/20000, Loss: 0.000009\n",
      "Epoch: 9880/20000, Loss: 0.000009\n",
      "Epoch: 9890/20000, Loss: 0.000009\n",
      "Epoch: 9900/20000, Loss: 0.000009\n",
      "Epoch: 9910/20000, Loss: 0.000009\n",
      "Epoch: 9920/20000, Loss: 0.000009\n",
      "Epoch: 9930/20000, Loss: 0.000009\n",
      "Epoch: 9940/20000, Loss: 0.000009\n",
      "Epoch: 9950/20000, Loss: 0.000009\n",
      "Epoch: 9960/20000, Loss: 0.000009\n",
      "Epoch: 9970/20000, Loss: 0.000009\n",
      "Epoch: 9980/20000, Loss: 0.000009\n",
      "Epoch: 9990/20000, Loss: 0.000009\n",
      "Epoch: 10000/20000, Loss: 0.000009\n",
      "Epoch: 10010/20000, Loss: 0.000009\n",
      "Epoch: 10020/20000, Loss: 0.000013\n",
      "Epoch: 10030/20000, Loss: 0.000011\n",
      "Epoch: 10040/20000, Loss: 0.000009\n",
      "Epoch: 10050/20000, Loss: 0.000009\n",
      "Epoch: 10060/20000, Loss: 0.000009\n",
      "Epoch: 10070/20000, Loss: 0.000009\n",
      "Epoch: 10080/20000, Loss: 0.000008\n",
      "Epoch: 10090/20000, Loss: 0.000008\n",
      "Epoch: 10100/20000, Loss: 0.000008\n",
      "Epoch: 10110/20000, Loss: 0.000008\n",
      "Epoch: 10120/20000, Loss: 0.000008\n",
      "Epoch: 10130/20000, Loss: 0.000008\n",
      "Epoch: 10140/20000, Loss: 0.000008\n",
      "Epoch: 10150/20000, Loss: 0.000008\n",
      "Epoch: 10160/20000, Loss: 0.000008\n",
      "Epoch: 10170/20000, Loss: 0.000008\n",
      "Epoch: 10180/20000, Loss: 0.000008\n",
      "Epoch: 10190/20000, Loss: 0.000008\n",
      "Epoch: 10200/20000, Loss: 0.000008\n",
      "Epoch: 10210/20000, Loss: 0.000008\n",
      "Epoch: 10220/20000, Loss: 0.000008\n",
      "Epoch: 10230/20000, Loss: 0.000008\n",
      "Epoch: 10240/20000, Loss: 0.000008\n",
      "Epoch: 10250/20000, Loss: 0.000016\n",
      "Epoch: 10260/20000, Loss: 0.000009\n",
      "Epoch: 10270/20000, Loss: 0.000009\n",
      "Epoch: 10280/20000, Loss: 0.000008\n",
      "Epoch: 10290/20000, Loss: 0.000008\n",
      "Epoch: 10300/20000, Loss: 0.000008\n",
      "Epoch: 10310/20000, Loss: 0.000008\n",
      "Epoch: 10320/20000, Loss: 0.000008\n",
      "Epoch: 10330/20000, Loss: 0.000008\n",
      "Epoch: 10340/20000, Loss: 0.000008\n",
      "Epoch: 10350/20000, Loss: 0.000008\n",
      "Epoch: 10360/20000, Loss: 0.000008\n",
      "Epoch: 10370/20000, Loss: 0.000007\n",
      "Epoch: 10380/20000, Loss: 0.000007\n",
      "Epoch: 10390/20000, Loss: 0.000007\n",
      "Epoch: 10400/20000, Loss: 0.000007\n",
      "Epoch: 10410/20000, Loss: 0.000007\n",
      "Epoch: 10420/20000, Loss: 0.000007\n",
      "Epoch: 10430/20000, Loss: 0.000007\n",
      "Epoch: 10440/20000, Loss: 0.000007\n",
      "Epoch: 10450/20000, Loss: 0.000007\n",
      "Epoch: 10460/20000, Loss: 0.000007\n",
      "Epoch: 10470/20000, Loss: 0.000007\n",
      "Epoch: 10480/20000, Loss: 0.000008\n",
      "Epoch: 10490/20000, Loss: 0.000007\n",
      "Epoch: 10500/20000, Loss: 0.000008\n",
      "Epoch: 10510/20000, Loss: 0.000008\n",
      "Epoch: 10520/20000, Loss: 0.000007\n",
      "Epoch: 10530/20000, Loss: 0.000007\n",
      "Epoch: 10540/20000, Loss: 0.000007\n",
      "Epoch: 10550/20000, Loss: 0.000007\n",
      "Epoch: 10560/20000, Loss: 0.000007\n",
      "Epoch: 10570/20000, Loss: 0.000007\n",
      "Epoch: 10580/20000, Loss: 0.000007\n",
      "Epoch: 10590/20000, Loss: 0.000007\n",
      "Epoch: 10600/20000, Loss: 0.000007\n",
      "Epoch: 10610/20000, Loss: 0.000007\n",
      "Epoch: 10620/20000, Loss: 0.000007\n",
      "Epoch: 10630/20000, Loss: 0.000007\n",
      "Epoch: 10640/20000, Loss: 0.000007\n",
      "Epoch: 10650/20000, Loss: 0.000007\n",
      "Epoch: 10660/20000, Loss: 0.000007\n",
      "Epoch: 10670/20000, Loss: 0.000007\n",
      "Epoch: 10680/20000, Loss: 0.000007\n",
      "Epoch: 10690/20000, Loss: 0.000007\n",
      "Epoch: 10700/20000, Loss: 0.000007\n",
      "Epoch: 10710/20000, Loss: 0.000007\n",
      "Epoch: 10720/20000, Loss: 0.000013\n",
      "Epoch: 10730/20000, Loss: 0.000009\n",
      "Epoch: 10740/20000, Loss: 0.000008\n",
      "Epoch: 10750/20000, Loss: 0.000007\n",
      "Epoch: 10760/20000, Loss: 0.000006\n",
      "Epoch: 10770/20000, Loss: 0.000006\n",
      "Epoch: 10780/20000, Loss: 0.000006\n",
      "Epoch: 10790/20000, Loss: 0.000006\n",
      "Epoch: 10800/20000, Loss: 0.000006\n",
      "Epoch: 10810/20000, Loss: 0.000006\n",
      "Epoch: 10820/20000, Loss: 0.000006\n",
      "Epoch: 10830/20000, Loss: 0.000006\n",
      "Epoch: 10840/20000, Loss: 0.000006\n",
      "Epoch: 10850/20000, Loss: 0.000006\n",
      "Epoch: 10860/20000, Loss: 0.000006\n",
      "Epoch: 10870/20000, Loss: 0.000006\n",
      "Epoch: 10880/20000, Loss: 0.000006\n",
      "Epoch: 10890/20000, Loss: 0.000006\n",
      "Epoch: 10900/20000, Loss: 0.000006\n",
      "Epoch: 10910/20000, Loss: 0.000006\n",
      "Epoch: 10920/20000, Loss: 0.000006\n",
      "Epoch: 10930/20000, Loss: 0.000006\n",
      "Epoch: 10940/20000, Loss: 0.000006\n",
      "Epoch: 10950/20000, Loss: 0.000009\n",
      "Epoch: 10960/20000, Loss: 0.000012\n",
      "Epoch: 10970/20000, Loss: 0.000008\n",
      "Epoch: 10980/20000, Loss: 0.000007\n",
      "Epoch: 10990/20000, Loss: 0.000006\n",
      "Epoch: 11000/20000, Loss: 0.000006\n",
      "Epoch: 11010/20000, Loss: 0.000006\n",
      "Epoch: 11020/20000, Loss: 0.000006\n",
      "Epoch: 11030/20000, Loss: 0.000006\n",
      "Epoch: 11040/20000, Loss: 0.000006\n",
      "Epoch: 11050/20000, Loss: 0.000006\n",
      "Epoch: 11060/20000, Loss: 0.000006\n",
      "Epoch: 11070/20000, Loss: 0.000006\n",
      "Epoch: 11080/20000, Loss: 0.000006\n",
      "Epoch: 11090/20000, Loss: 0.000006\n",
      "Epoch: 11100/20000, Loss: 0.000006\n",
      "Epoch: 11110/20000, Loss: 0.000006\n",
      "Epoch: 11120/20000, Loss: 0.000006\n",
      "Epoch: 11130/20000, Loss: 0.000006\n",
      "Epoch: 11140/20000, Loss: 0.000006\n",
      "Epoch: 11150/20000, Loss: 0.000006\n",
      "Epoch: 11160/20000, Loss: 0.000006\n",
      "Epoch: 11170/20000, Loss: 0.000006\n",
      "Epoch: 11180/20000, Loss: 0.000006\n",
      "Epoch: 11190/20000, Loss: 0.000006\n",
      "Epoch: 11200/20000, Loss: 0.000005\n",
      "Epoch: 11210/20000, Loss: 0.000005\n",
      "Epoch: 11220/20000, Loss: 0.000006\n",
      "Epoch: 11230/20000, Loss: 0.000012\n",
      "Epoch: 11240/20000, Loss: 0.000009\n",
      "Epoch: 11250/20000, Loss: 0.000006\n",
      "Epoch: 11260/20000, Loss: 0.000005\n",
      "Epoch: 11270/20000, Loss: 0.000006\n",
      "Epoch: 11280/20000, Loss: 0.000005\n",
      "Epoch: 11290/20000, Loss: 0.000005\n",
      "Epoch: 11300/20000, Loss: 0.000005\n",
      "Epoch: 11310/20000, Loss: 0.000005\n",
      "Epoch: 11320/20000, Loss: 0.000005\n",
      "Epoch: 11330/20000, Loss: 0.000005\n",
      "Epoch: 11340/20000, Loss: 0.000005\n",
      "Epoch: 11350/20000, Loss: 0.000005\n",
      "Epoch: 11360/20000, Loss: 0.000005\n",
      "Epoch: 11370/20000, Loss: 0.000005\n",
      "Epoch: 11380/20000, Loss: 0.000005\n",
      "Epoch: 11390/20000, Loss: 0.000005\n",
      "Epoch: 11400/20000, Loss: 0.000005\n",
      "Epoch: 11410/20000, Loss: 0.000005\n",
      "Epoch: 11420/20000, Loss: 0.000005\n",
      "Epoch: 11430/20000, Loss: 0.000005\n",
      "Epoch: 11440/20000, Loss: 0.000009\n",
      "Epoch: 11450/20000, Loss: 0.000009\n",
      "Epoch: 11460/20000, Loss: 0.000005\n",
      "Epoch: 11470/20000, Loss: 0.000005\n",
      "Epoch: 11480/20000, Loss: 0.000005\n",
      "Epoch: 11490/20000, Loss: 0.000005\n",
      "Epoch: 11500/20000, Loss: 0.000005\n",
      "Epoch: 11510/20000, Loss: 0.000005\n",
      "Epoch: 11520/20000, Loss: 0.000005\n",
      "Epoch: 11530/20000, Loss: 0.000005\n",
      "Epoch: 11540/20000, Loss: 0.000005\n",
      "Epoch: 11550/20000, Loss: 0.000005\n",
      "Epoch: 11560/20000, Loss: 0.000005\n",
      "Epoch: 11570/20000, Loss: 0.000005\n",
      "Epoch: 11580/20000, Loss: 0.000005\n",
      "Epoch: 11590/20000, Loss: 0.000005\n",
      "Epoch: 11600/20000, Loss: 0.000005\n",
      "Epoch: 11610/20000, Loss: 0.000005\n",
      "Epoch: 11620/20000, Loss: 0.000005\n",
      "Epoch: 11630/20000, Loss: 0.000005\n",
      "Epoch: 11640/20000, Loss: 0.000005\n",
      "Epoch: 11650/20000, Loss: 0.000005\n",
      "Epoch: 11660/20000, Loss: 0.000005\n",
      "Epoch: 11670/20000, Loss: 0.000005\n",
      "Epoch: 11680/20000, Loss: 0.000009\n",
      "Epoch: 11690/20000, Loss: 0.000007\n",
      "Epoch: 11700/20000, Loss: 0.000006\n",
      "Epoch: 11710/20000, Loss: 0.000005\n",
      "Epoch: 11720/20000, Loss: 0.000005\n",
      "Epoch: 11730/20000, Loss: 0.000005\n",
      "Epoch: 11740/20000, Loss: 0.000005\n",
      "Epoch: 11750/20000, Loss: 0.000005\n",
      "Epoch: 11760/20000, Loss: 0.000005\n",
      "Epoch: 11770/20000, Loss: 0.000005\n",
      "Epoch: 11780/20000, Loss: 0.000005\n",
      "Epoch: 11790/20000, Loss: 0.000005\n",
      "Epoch: 11800/20000, Loss: 0.000005\n",
      "Epoch: 11810/20000, Loss: 0.000005\n",
      "Epoch: 11820/20000, Loss: 0.000005\n",
      "Epoch: 11830/20000, Loss: 0.000005\n",
      "Epoch: 11840/20000, Loss: 0.000005\n",
      "Epoch: 11850/20000, Loss: 0.000005\n",
      "Epoch: 11860/20000, Loss: 0.000005\n",
      "Epoch: 11870/20000, Loss: 0.000005\n",
      "Epoch: 11880/20000, Loss: 0.000005\n",
      "Epoch: 11890/20000, Loss: 0.000004\n",
      "Epoch: 11900/20000, Loss: 0.000004\n",
      "Epoch: 11910/20000, Loss: 0.000004\n",
      "Epoch: 11920/20000, Loss: 0.000007\n",
      "Epoch: 11930/20000, Loss: 0.000007\n",
      "Epoch: 11940/20000, Loss: 0.000004\n",
      "Epoch: 11950/20000, Loss: 0.000005\n",
      "Epoch: 11960/20000, Loss: 0.000005\n",
      "Epoch: 11970/20000, Loss: 0.000004\n",
      "Epoch: 11980/20000, Loss: 0.000004\n",
      "Epoch: 11990/20000, Loss: 0.000004\n",
      "Epoch: 12000/20000, Loss: 0.000004\n",
      "Epoch: 12010/20000, Loss: 0.000004\n",
      "Epoch: 12020/20000, Loss: 0.000004\n",
      "Epoch: 12030/20000, Loss: 0.000004\n",
      "Epoch: 12040/20000, Loss: 0.000004\n",
      "Epoch: 12050/20000, Loss: 0.000004\n",
      "Epoch: 12060/20000, Loss: 0.000004\n",
      "Epoch: 12070/20000, Loss: 0.000004\n",
      "Epoch: 12080/20000, Loss: 0.000004\n",
      "Epoch: 12090/20000, Loss: 0.000004\n",
      "Epoch: 12100/20000, Loss: 0.000004\n",
      "Epoch: 12110/20000, Loss: 0.000004\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 12120/20000, Loss: 0.000004\n",
      "Epoch: 12130/20000, Loss: 0.000004\n",
      "Epoch: 12140/20000, Loss: 0.000004\n",
      "Epoch: 12150/20000, Loss: 0.000004\n",
      "Epoch: 12160/20000, Loss: 0.000005\n",
      "Epoch: 12170/20000, Loss: 0.000009\n",
      "Epoch: 12180/20000, Loss: 0.000006\n",
      "Epoch: 12190/20000, Loss: 0.000004\n",
      "Epoch: 12200/20000, Loss: 0.000004\n",
      "Epoch: 12210/20000, Loss: 0.000004\n",
      "Epoch: 12220/20000, Loss: 0.000004\n",
      "Epoch: 12230/20000, Loss: 0.000004\n",
      "Epoch: 12240/20000, Loss: 0.000004\n",
      "Epoch: 12250/20000, Loss: 0.000004\n",
      "Epoch: 12260/20000, Loss: 0.000004\n",
      "Epoch: 12270/20000, Loss: 0.000004\n",
      "Epoch: 12280/20000, Loss: 0.000004\n",
      "Epoch: 12290/20000, Loss: 0.000004\n",
      "Epoch: 12300/20000, Loss: 0.000004\n",
      "Epoch: 12310/20000, Loss: 0.000004\n",
      "Epoch: 12320/20000, Loss: 0.000004\n",
      "Epoch: 12330/20000, Loss: 0.000004\n",
      "Epoch: 12340/20000, Loss: 0.000004\n",
      "Epoch: 12350/20000, Loss: 0.000004\n",
      "Epoch: 12360/20000, Loss: 0.000004\n",
      "Epoch: 12370/20000, Loss: 0.000004\n",
      "Epoch: 12380/20000, Loss: 0.000004\n",
      "Epoch: 12390/20000, Loss: 0.000011\n",
      "Epoch: 12400/20000, Loss: 0.000005\n",
      "Epoch: 12410/20000, Loss: 0.000004\n",
      "Epoch: 12420/20000, Loss: 0.000004\n",
      "Epoch: 12430/20000, Loss: 0.000004\n",
      "Epoch: 12440/20000, Loss: 0.000004\n",
      "Epoch: 12450/20000, Loss: 0.000004\n",
      "Epoch: 12460/20000, Loss: 0.000004\n",
      "Epoch: 12470/20000, Loss: 0.000004\n",
      "Epoch: 12480/20000, Loss: 0.000004\n",
      "Epoch: 12490/20000, Loss: 0.000004\n",
      "Epoch: 12500/20000, Loss: 0.000004\n",
      "Epoch: 12510/20000, Loss: 0.000004\n",
      "Epoch: 12520/20000, Loss: 0.000004\n",
      "Epoch: 12530/20000, Loss: 0.000004\n",
      "Epoch: 12540/20000, Loss: 0.000004\n",
      "Epoch: 12550/20000, Loss: 0.000004\n",
      "Epoch: 12560/20000, Loss: 0.000004\n",
      "Epoch: 12570/20000, Loss: 0.000004\n",
      "Epoch: 12580/20000, Loss: 0.000004\n",
      "Epoch: 12590/20000, Loss: 0.000004\n",
      "Epoch: 12600/20000, Loss: 0.000007\n",
      "Epoch: 12610/20000, Loss: 0.000008\n",
      "Epoch: 12620/20000, Loss: 0.000004\n",
      "Epoch: 12630/20000, Loss: 0.000004\n",
      "Epoch: 12640/20000, Loss: 0.000004\n",
      "Epoch: 12650/20000, Loss: 0.000004\n",
      "Epoch: 12660/20000, Loss: 0.000004\n",
      "Epoch: 12670/20000, Loss: 0.000004\n",
      "Epoch: 12680/20000, Loss: 0.000004\n",
      "Epoch: 12690/20000, Loss: 0.000004\n",
      "Epoch: 12700/20000, Loss: 0.000004\n",
      "Epoch: 12710/20000, Loss: 0.000004\n",
      "Epoch: 12720/20000, Loss: 0.000004\n",
      "Epoch: 12730/20000, Loss: 0.000004\n",
      "Epoch: 12740/20000, Loss: 0.000004\n",
      "Epoch: 12750/20000, Loss: 0.000004\n",
      "Epoch: 12760/20000, Loss: 0.000004\n",
      "Epoch: 12770/20000, Loss: 0.000004\n",
      "Epoch: 12780/20000, Loss: 0.000004\n",
      "Epoch: 12790/20000, Loss: 0.000004\n",
      "Epoch: 12800/20000, Loss: 0.000004\n",
      "Epoch: 12810/20000, Loss: 0.000004\n",
      "Epoch: 12820/20000, Loss: 0.000004\n",
      "Epoch: 12830/20000, Loss: 0.000004\n",
      "Epoch: 12840/20000, Loss: 0.000015\n",
      "Epoch: 12850/20000, Loss: 0.000004\n",
      "Epoch: 12860/20000, Loss: 0.000004\n",
      "Epoch: 12870/20000, Loss: 0.000004\n",
      "Epoch: 12880/20000, Loss: 0.000004\n",
      "Epoch: 12890/20000, Loss: 0.000004\n",
      "Epoch: 12900/20000, Loss: 0.000004\n",
      "Epoch: 12910/20000, Loss: 0.000004\n",
      "Epoch: 12920/20000, Loss: 0.000004\n",
      "Epoch: 12930/20000, Loss: 0.000004\n",
      "Epoch: 12940/20000, Loss: 0.000004\n",
      "Epoch: 12950/20000, Loss: 0.000004\n",
      "Epoch: 12960/20000, Loss: 0.000004\n",
      "Epoch: 12970/20000, Loss: 0.000004\n",
      "Epoch: 12980/20000, Loss: 0.000004\n",
      "Epoch: 12990/20000, Loss: 0.000004\n",
      "Epoch: 13000/20000, Loss: 0.000004\n",
      "Epoch: 13010/20000, Loss: 0.000004\n",
      "Epoch: 13020/20000, Loss: 0.000004\n",
      "Epoch: 13030/20000, Loss: 0.000004\n",
      "Epoch: 13040/20000, Loss: 0.000004\n",
      "Epoch: 13050/20000, Loss: 0.000004\n",
      "Epoch: 13060/20000, Loss: 0.000004\n",
      "Epoch: 13070/20000, Loss: 0.000009\n",
      "Epoch: 13080/20000, Loss: 0.000009\n",
      "Epoch: 13090/20000, Loss: 0.000004\n",
      "Epoch: 13100/20000, Loss: 0.000004\n",
      "Epoch: 13110/20000, Loss: 0.000003\n",
      "Epoch: 13120/20000, Loss: 0.000004\n",
      "Epoch: 13130/20000, Loss: 0.000003\n",
      "Epoch: 13140/20000, Loss: 0.000003\n",
      "Epoch: 13150/20000, Loss: 0.000003\n",
      "Epoch: 13160/20000, Loss: 0.000003\n",
      "Epoch: 13170/20000, Loss: 0.000003\n",
      "Epoch: 13180/20000, Loss: 0.000003\n",
      "Epoch: 13190/20000, Loss: 0.000003\n",
      "Epoch: 13200/20000, Loss: 0.000003\n",
      "Epoch: 13210/20000, Loss: 0.000003\n",
      "Epoch: 13220/20000, Loss: 0.000003\n",
      "Epoch: 13230/20000, Loss: 0.000003\n",
      "Epoch: 13240/20000, Loss: 0.000003\n",
      "Epoch: 13250/20000, Loss: 0.000003\n",
      "Epoch: 13260/20000, Loss: 0.000003\n",
      "Epoch: 13270/20000, Loss: 0.000003\n",
      "Epoch: 13280/20000, Loss: 0.000003\n",
      "Epoch: 13290/20000, Loss: 0.000003\n",
      "Epoch: 13300/20000, Loss: 0.000003\n",
      "Epoch: 13310/20000, Loss: 0.000010\n",
      "Epoch: 13320/20000, Loss: 0.000008\n",
      "Epoch: 13330/20000, Loss: 0.000005\n",
      "Epoch: 13340/20000, Loss: 0.000004\n",
      "Epoch: 13350/20000, Loss: 0.000003\n",
      "Epoch: 13360/20000, Loss: 0.000003\n",
      "Epoch: 13370/20000, Loss: 0.000003\n",
      "Epoch: 13380/20000, Loss: 0.000003\n",
      "Epoch: 13390/20000, Loss: 0.000003\n",
      "Epoch: 13400/20000, Loss: 0.000003\n",
      "Epoch: 13410/20000, Loss: 0.000003\n",
      "Epoch: 13420/20000, Loss: 0.000003\n",
      "Epoch: 13430/20000, Loss: 0.000003\n",
      "Epoch: 13440/20000, Loss: 0.000003\n",
      "Epoch: 13450/20000, Loss: 0.000003\n",
      "Epoch: 13460/20000, Loss: 0.000003\n",
      "Epoch: 13470/20000, Loss: 0.000003\n",
      "Epoch: 13480/20000, Loss: 0.000003\n",
      "Epoch: 13490/20000, Loss: 0.000003\n",
      "Epoch: 13500/20000, Loss: 0.000003\n",
      "Epoch: 13510/20000, Loss: 0.000003\n",
      "Epoch: 13520/20000, Loss: 0.000003\n",
      "Epoch: 13530/20000, Loss: 0.000003\n",
      "Epoch: 13540/20000, Loss: 0.000003\n",
      "Epoch: 13550/20000, Loss: 0.000013\n",
      "Epoch: 13560/20000, Loss: 0.000003\n",
      "Epoch: 13570/20000, Loss: 0.000004\n",
      "Epoch: 13580/20000, Loss: 0.000004\n",
      "Epoch: 13590/20000, Loss: 0.000003\n",
      "Epoch: 13600/20000, Loss: 0.000003\n",
      "Epoch: 13610/20000, Loss: 0.000003\n",
      "Epoch: 13620/20000, Loss: 0.000003\n",
      "Epoch: 13630/20000, Loss: 0.000003\n",
      "Epoch: 13640/20000, Loss: 0.000003\n",
      "Epoch: 13650/20000, Loss: 0.000003\n",
      "Epoch: 13660/20000, Loss: 0.000003\n",
      "Epoch: 13670/20000, Loss: 0.000003\n",
      "Epoch: 13680/20000, Loss: 0.000003\n",
      "Epoch: 13690/20000, Loss: 0.000003\n",
      "Epoch: 13700/20000, Loss: 0.000003\n",
      "Epoch: 13710/20000, Loss: 0.000003\n",
      "Epoch: 13720/20000, Loss: 0.000003\n",
      "Epoch: 13730/20000, Loss: 0.000003\n",
      "Epoch: 13740/20000, Loss: 0.000003\n",
      "Epoch: 13750/20000, Loss: 0.000003\n",
      "Epoch: 13760/20000, Loss: 0.000008\n",
      "Epoch: 13770/20000, Loss: 0.000007\n",
      "Epoch: 13780/20000, Loss: 0.000003\n",
      "Epoch: 13790/20000, Loss: 0.000003\n",
      "Epoch: 13800/20000, Loss: 0.000003\n",
      "Epoch: 13810/20000, Loss: 0.000003\n",
      "Epoch: 13820/20000, Loss: 0.000003\n",
      "Epoch: 13830/20000, Loss: 0.000003\n",
      "Epoch: 13840/20000, Loss: 0.000003\n",
      "Epoch: 13850/20000, Loss: 0.000003\n",
      "Epoch: 13860/20000, Loss: 0.000003\n",
      "Epoch: 13870/20000, Loss: 0.000003\n",
      "Epoch: 13880/20000, Loss: 0.000003\n",
      "Epoch: 13890/20000, Loss: 0.000003\n",
      "Epoch: 13900/20000, Loss: 0.000003\n",
      "Epoch: 13910/20000, Loss: 0.000003\n",
      "Epoch: 13920/20000, Loss: 0.000003\n",
      "Epoch: 13930/20000, Loss: 0.000003\n",
      "Epoch: 13940/20000, Loss: 0.000003\n",
      "Epoch: 13950/20000, Loss: 0.000003\n",
      "Epoch: 13960/20000, Loss: 0.000003\n",
      "Epoch: 13970/20000, Loss: 0.000003\n",
      "Epoch: 13980/20000, Loss: 0.000004\n",
      "Epoch: 13990/20000, Loss: 0.000004\n",
      "Epoch: 14000/20000, Loss: 0.000005\n",
      "Epoch: 14010/20000, Loss: 0.000003\n",
      "Epoch: 14020/20000, Loss: 0.000003\n",
      "Epoch: 14030/20000, Loss: 0.000003\n",
      "Epoch: 14040/20000, Loss: 0.000003\n",
      "Epoch: 14050/20000, Loss: 0.000003\n",
      "Epoch: 14060/20000, Loss: 0.000003\n",
      "Epoch: 14070/20000, Loss: 0.000003\n",
      "Epoch: 14080/20000, Loss: 0.000003\n",
      "Epoch: 14090/20000, Loss: 0.000003\n",
      "Epoch: 14100/20000, Loss: 0.000003\n",
      "Epoch: 14110/20000, Loss: 0.000003\n",
      "Epoch: 14120/20000, Loss: 0.000003\n",
      "Epoch: 14130/20000, Loss: 0.000003\n",
      "Epoch: 14140/20000, Loss: 0.000003\n",
      "Epoch: 14150/20000, Loss: 0.000003\n",
      "Epoch: 14160/20000, Loss: 0.000003\n",
      "Epoch: 14170/20000, Loss: 0.000003\n",
      "Epoch: 14180/20000, Loss: 0.000003\n",
      "Epoch: 14190/20000, Loss: 0.000003\n",
      "Epoch: 14200/20000, Loss: 0.000003\n",
      "Epoch: 14210/20000, Loss: 0.000015\n",
      "Epoch: 14220/20000, Loss: 0.000003\n",
      "Epoch: 14230/20000, Loss: 0.000003\n",
      "Epoch: 14240/20000, Loss: 0.000003\n",
      "Epoch: 14250/20000, Loss: 0.000003\n",
      "Epoch: 14260/20000, Loss: 0.000003\n",
      "Epoch: 14270/20000, Loss: 0.000003\n",
      "Epoch: 14280/20000, Loss: 0.000003\n",
      "Epoch: 14290/20000, Loss: 0.000003\n",
      "Epoch: 14300/20000, Loss: 0.000003\n",
      "Epoch: 14310/20000, Loss: 0.000003\n",
      "Epoch: 14320/20000, Loss: 0.000003\n",
      "Epoch: 14330/20000, Loss: 0.000003\n",
      "Epoch: 14340/20000, Loss: 0.000003\n",
      "Epoch: 14350/20000, Loss: 0.000003\n",
      "Epoch: 14360/20000, Loss: 0.000003\n",
      "Epoch: 14370/20000, Loss: 0.000003\n",
      "Epoch: 14380/20000, Loss: 0.000003\n",
      "Epoch: 14390/20000, Loss: 0.000003\n",
      "Epoch: 14400/20000, Loss: 0.000003\n",
      "Epoch: 14410/20000, Loss: 0.000003\n",
      "Epoch: 14420/20000, Loss: 0.000003\n",
      "Epoch: 14430/20000, Loss: 0.000003\n",
      "Epoch: 14440/20000, Loss: 0.000003\n",
      "Epoch: 14450/20000, Loss: 0.000003\n",
      "Epoch: 14460/20000, Loss: 0.000014\n",
      "Epoch: 14470/20000, Loss: 0.000003\n",
      "Epoch: 14480/20000, Loss: 0.000004\n",
      "Epoch: 14490/20000, Loss: 0.000003\n",
      "Epoch: 14500/20000, Loss: 0.000003\n",
      "Epoch: 14510/20000, Loss: 0.000003\n",
      "Epoch: 14520/20000, Loss: 0.000003\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 14530/20000, Loss: 0.000003\n",
      "Epoch: 14540/20000, Loss: 0.000003\n",
      "Epoch: 14550/20000, Loss: 0.000003\n",
      "Epoch: 14560/20000, Loss: 0.000003\n",
      "Epoch: 14570/20000, Loss: 0.000003\n",
      "Epoch: 14580/20000, Loss: 0.000003\n",
      "Epoch: 14590/20000, Loss: 0.000003\n",
      "Epoch: 14600/20000, Loss: 0.000003\n",
      "Epoch: 14610/20000, Loss: 0.000003\n",
      "Epoch: 14620/20000, Loss: 0.000003\n",
      "Epoch: 14630/20000, Loss: 0.000003\n",
      "Epoch: 14640/20000, Loss: 0.000003\n",
      "Epoch: 14650/20000, Loss: 0.000003\n",
      "Epoch: 14660/20000, Loss: 0.000003\n",
      "Epoch: 14670/20000, Loss: 0.000003\n",
      "Epoch: 14680/20000, Loss: 0.000003\n",
      "Epoch: 14690/20000, Loss: 0.000003\n",
      "Epoch: 14700/20000, Loss: 0.000005\n",
      "Epoch: 14710/20000, Loss: 0.000006\n",
      "Epoch: 14720/20000, Loss: 0.000003\n",
      "Epoch: 14730/20000, Loss: 0.000003\n",
      "Epoch: 14740/20000, Loss: 0.000003\n",
      "Epoch: 14750/20000, Loss: 0.000003\n",
      "Epoch: 14760/20000, Loss: 0.000003\n",
      "Epoch: 14770/20000, Loss: 0.000003\n",
      "Epoch: 14780/20000, Loss: 0.000003\n",
      "Epoch: 14790/20000, Loss: 0.000003\n",
      "Epoch: 14800/20000, Loss: 0.000003\n",
      "Epoch: 14810/20000, Loss: 0.000003\n",
      "Epoch: 14820/20000, Loss: 0.000003\n",
      "Epoch: 14830/20000, Loss: 0.000003\n",
      "Epoch: 14840/20000, Loss: 0.000003\n",
      "Epoch: 14850/20000, Loss: 0.000003\n",
      "Epoch: 14860/20000, Loss: 0.000003\n",
      "Epoch: 14870/20000, Loss: 0.000003\n",
      "Epoch: 14880/20000, Loss: 0.000003\n",
      "Epoch: 14890/20000, Loss: 0.000003\n",
      "Epoch: 14900/20000, Loss: 0.000003\n",
      "Epoch: 14910/20000, Loss: 0.000003\n",
      "Epoch: 14920/20000, Loss: 0.000003\n",
      "Epoch: 14930/20000, Loss: 0.000003\n",
      "Epoch: 14940/20000, Loss: 0.000003\n",
      "Epoch: 14950/20000, Loss: 0.000003\n",
      "Epoch: 14960/20000, Loss: 0.000005\n",
      "Epoch: 14970/20000, Loss: 0.000006\n",
      "Epoch: 14980/20000, Loss: 0.000003\n",
      "Epoch: 14990/20000, Loss: 0.000003\n",
      "Epoch: 15000/20000, Loss: 0.000003\n",
      "Epoch: 15010/20000, Loss: 0.000003\n",
      "Epoch: 15020/20000, Loss: 0.000003\n",
      "Epoch: 15030/20000, Loss: 0.000003\n",
      "Epoch: 15040/20000, Loss: 0.000003\n",
      "Epoch: 15050/20000, Loss: 0.000003\n",
      "Epoch: 15060/20000, Loss: 0.000003\n",
      "Epoch: 15070/20000, Loss: 0.000003\n",
      "Epoch: 15080/20000, Loss: 0.000003\n",
      "Epoch: 15090/20000, Loss: 0.000003\n",
      "Epoch: 15100/20000, Loss: 0.000003\n",
      "Epoch: 15110/20000, Loss: 0.000003\n",
      "Epoch: 15120/20000, Loss: 0.000003\n",
      "Epoch: 15130/20000, Loss: 0.000003\n",
      "Epoch: 15140/20000, Loss: 0.000003\n",
      "Epoch: 15150/20000, Loss: 0.000003\n",
      "Epoch: 15160/20000, Loss: 0.000003\n",
      "Epoch: 15170/20000, Loss: 0.000003\n",
      "Epoch: 15180/20000, Loss: 0.000003\n",
      "Epoch: 15190/20000, Loss: 0.000003\n",
      "Epoch: 15200/20000, Loss: 0.000003\n",
      "Epoch: 15210/20000, Loss: 0.000003\n",
      "Epoch: 15220/20000, Loss: 0.000006\n",
      "Epoch: 15230/20000, Loss: 0.000005\n",
      "Epoch: 15240/20000, Loss: 0.000003\n",
      "Epoch: 15250/20000, Loss: 0.000003\n",
      "Epoch: 15260/20000, Loss: 0.000003\n",
      "Epoch: 15270/20000, Loss: 0.000003\n",
      "Epoch: 15280/20000, Loss: 0.000003\n",
      "Epoch: 15290/20000, Loss: 0.000003\n",
      "Epoch: 15300/20000, Loss: 0.000003\n",
      "Epoch: 15310/20000, Loss: 0.000003\n",
      "Epoch: 15320/20000, Loss: 0.000003\n",
      "Epoch: 15330/20000, Loss: 0.000003\n",
      "Epoch: 15340/20000, Loss: 0.000003\n",
      "Epoch: 15350/20000, Loss: 0.000003\n",
      "Epoch: 15360/20000, Loss: 0.000003\n",
      "Epoch: 15370/20000, Loss: 0.000003\n",
      "Epoch: 15380/20000, Loss: 0.000003\n",
      "Epoch: 15390/20000, Loss: 0.000003\n",
      "Epoch: 15400/20000, Loss: 0.000003\n",
      "Epoch: 15410/20000, Loss: 0.000003\n",
      "Epoch: 15420/20000, Loss: 0.000003\n",
      "Epoch: 15430/20000, Loss: 0.000003\n",
      "Epoch: 15440/20000, Loss: 0.000003\n",
      "Epoch: 15450/20000, Loss: 0.000004\n",
      "Epoch: 15460/20000, Loss: 0.000004\n",
      "Epoch: 15470/20000, Loss: 0.000003\n",
      "Epoch: 15480/20000, Loss: 0.000003\n",
      "Epoch: 15490/20000, Loss: 0.000003\n",
      "Epoch: 15500/20000, Loss: 0.000003\n",
      "Epoch: 15510/20000, Loss: 0.000003\n",
      "Epoch: 15520/20000, Loss: 0.000003\n",
      "Epoch: 15530/20000, Loss: 0.000003\n",
      "Epoch: 15540/20000, Loss: 0.000003\n",
      "Epoch: 15550/20000, Loss: 0.000003\n",
      "Epoch: 15560/20000, Loss: 0.000003\n",
      "Epoch: 15570/20000, Loss: 0.000003\n",
      "Epoch: 15580/20000, Loss: 0.000003\n",
      "Epoch: 15590/20000, Loss: 0.000003\n",
      "Epoch: 15600/20000, Loss: 0.000003\n",
      "Epoch: 15610/20000, Loss: 0.000003\n",
      "Epoch: 15620/20000, Loss: 0.000003\n",
      "Epoch: 15630/20000, Loss: 0.000003\n",
      "Epoch: 15640/20000, Loss: 0.000003\n",
      "Epoch: 15650/20000, Loss: 0.000003\n",
      "Epoch: 15660/20000, Loss: 0.000003\n",
      "Epoch: 15670/20000, Loss: 0.000003\n",
      "Epoch: 15680/20000, Loss: 0.000003\n",
      "Epoch: 15690/20000, Loss: 0.000003\n",
      "Epoch: 15700/20000, Loss: 0.000003\n",
      "Epoch: 15710/20000, Loss: 0.000003\n",
      "Epoch: 15720/20000, Loss: 0.000003\n",
      "Epoch: 15730/20000, Loss: 0.000004\n",
      "Epoch: 15740/20000, Loss: 0.000003\n",
      "Epoch: 15750/20000, Loss: 0.000003\n",
      "Epoch: 15760/20000, Loss: 0.000003\n",
      "Epoch: 15770/20000, Loss: 0.000003\n",
      "Epoch: 15780/20000, Loss: 0.000003\n",
      "Epoch: 15790/20000, Loss: 0.000003\n",
      "Epoch: 15800/20000, Loss: 0.000003\n",
      "Epoch: 15810/20000, Loss: 0.000003\n",
      "Epoch: 15820/20000, Loss: 0.000002\n",
      "Epoch: 15830/20000, Loss: 0.000002\n",
      "Epoch: 15840/20000, Loss: 0.000002\n",
      "Epoch: 15850/20000, Loss: 0.000002\n",
      "Epoch: 15860/20000, Loss: 0.000002\n",
      "Epoch: 15870/20000, Loss: 0.000002\n",
      "Epoch: 15880/20000, Loss: 0.000002\n",
      "Epoch: 15890/20000, Loss: 0.000002\n",
      "Epoch: 15900/20000, Loss: 0.000002\n",
      "Epoch: 15910/20000, Loss: 0.000002\n",
      "Epoch: 15920/20000, Loss: 0.000002\n",
      "Epoch: 15930/20000, Loss: 0.000002\n",
      "Epoch: 15940/20000, Loss: 0.000002\n",
      "Epoch: 15950/20000, Loss: 0.000002\n",
      "Epoch: 15960/20000, Loss: 0.000002\n",
      "Epoch: 15970/20000, Loss: 0.000002\n",
      "Epoch: 15980/20000, Loss: 0.000002\n",
      "Epoch: 15990/20000, Loss: 0.000004\n",
      "Epoch: 16000/20000, Loss: 0.000003\n",
      "Epoch: 16010/20000, Loss: 0.000004\n",
      "Epoch: 16020/20000, Loss: 0.000003\n",
      "Epoch: 16030/20000, Loss: 0.000003\n",
      "Epoch: 16040/20000, Loss: 0.000003\n",
      "Epoch: 16050/20000, Loss: 0.000002\n",
      "Epoch: 16060/20000, Loss: 0.000002\n",
      "Epoch: 16070/20000, Loss: 0.000002\n",
      "Epoch: 16080/20000, Loss: 0.000002\n",
      "Epoch: 16090/20000, Loss: 0.000002\n",
      "Epoch: 16100/20000, Loss: 0.000002\n",
      "Epoch: 16110/20000, Loss: 0.000003\n",
      "Epoch: 16120/20000, Loss: 0.000002\n",
      "Epoch: 16130/20000, Loss: 0.000002\n",
      "Epoch: 16140/20000, Loss: 0.000002\n",
      "Epoch: 16150/20000, Loss: 0.000002\n",
      "Epoch: 16160/20000, Loss: 0.000002\n",
      "Epoch: 16170/20000, Loss: 0.000002\n",
      "Epoch: 16180/20000, Loss: 0.000002\n",
      "Epoch: 16190/20000, Loss: 0.000002\n",
      "Epoch: 16200/20000, Loss: 0.000002\n",
      "Epoch: 16210/20000, Loss: 0.000002\n",
      "Epoch: 16220/20000, Loss: 0.000003\n",
      "Epoch: 16230/20000, Loss: 0.000004\n",
      "Epoch: 16240/20000, Loss: 0.000002\n",
      "Epoch: 16250/20000, Loss: 0.000003\n",
      "Epoch: 16260/20000, Loss: 0.000002\n",
      "Epoch: 16270/20000, Loss: 0.000002\n",
      "Epoch: 16280/20000, Loss: 0.000002\n",
      "Epoch: 16290/20000, Loss: 0.000003\n",
      "Epoch: 16300/20000, Loss: 0.000004\n",
      "Epoch: 16310/20000, Loss: 0.000002\n",
      "Epoch: 16320/20000, Loss: 0.000003\n",
      "Epoch: 16330/20000, Loss: 0.000002\n",
      "Epoch: 16340/20000, Loss: 0.000002\n",
      "Epoch: 16350/20000, Loss: 0.000003\n",
      "Epoch: 16360/20000, Loss: 0.000003\n",
      "Epoch: 16370/20000, Loss: 0.000003\n",
      "Epoch: 16380/20000, Loss: 0.000002\n",
      "Epoch: 16390/20000, Loss: 0.000003\n",
      "Epoch: 16400/20000, Loss: 0.000003\n",
      "Epoch: 16410/20000, Loss: 0.000003\n",
      "Epoch: 16420/20000, Loss: 0.000003\n",
      "Epoch: 16430/20000, Loss: 0.000002\n",
      "Epoch: 16440/20000, Loss: 0.000002\n",
      "Epoch: 16450/20000, Loss: 0.000002\n",
      "Epoch: 16460/20000, Loss: 0.000002\n",
      "Epoch: 16470/20000, Loss: 0.000003\n",
      "Epoch: 16480/20000, Loss: 0.000009\n",
      "Epoch: 16490/20000, Loss: 0.000003\n",
      "Epoch: 16500/20000, Loss: 0.000003\n",
      "Epoch: 16510/20000, Loss: 0.000002\n",
      "Epoch: 16520/20000, Loss: 0.000002\n",
      "Epoch: 16530/20000, Loss: 0.000002\n",
      "Epoch: 16540/20000, Loss: 0.000002\n",
      "Epoch: 16550/20000, Loss: 0.000002\n",
      "Epoch: 16560/20000, Loss: 0.000002\n",
      "Epoch: 16570/20000, Loss: 0.000002\n",
      "Epoch: 16580/20000, Loss: 0.000002\n",
      "Epoch: 16590/20000, Loss: 0.000002\n",
      "Epoch: 16600/20000, Loss: 0.000002\n",
      "Epoch: 16610/20000, Loss: 0.000002\n",
      "Epoch: 16620/20000, Loss: 0.000002\n",
      "Epoch: 16630/20000, Loss: 0.000002\n",
      "Epoch: 16640/20000, Loss: 0.000003\n",
      "Epoch: 16650/20000, Loss: 0.000005\n",
      "Epoch: 16660/20000, Loss: 0.000002\n",
      "Epoch: 16670/20000, Loss: 0.000002\n",
      "Epoch: 16680/20000, Loss: 0.000002\n",
      "Epoch: 16690/20000, Loss: 0.000002\n",
      "Epoch: 16700/20000, Loss: 0.000002\n",
      "Epoch: 16710/20000, Loss: 0.000002\n",
      "Epoch: 16720/20000, Loss: 0.000002\n",
      "Epoch: 16730/20000, Loss: 0.000002\n",
      "Epoch: 16740/20000, Loss: 0.000002\n",
      "Epoch: 16750/20000, Loss: 0.000002\n",
      "Epoch: 16760/20000, Loss: 0.000002\n",
      "Epoch: 16770/20000, Loss: 0.000002\n",
      "Epoch: 16780/20000, Loss: 0.000002\n",
      "Epoch: 16790/20000, Loss: 0.000004\n",
      "Epoch: 16800/20000, Loss: 0.000002\n",
      "Epoch: 16810/20000, Loss: 0.000004\n",
      "Epoch: 16820/20000, Loss: 0.000002\n",
      "Epoch: 16830/20000, Loss: 0.000002\n",
      "Epoch: 16840/20000, Loss: 0.000002\n",
      "Epoch: 16850/20000, Loss: 0.000002\n",
      "Epoch: 16860/20000, Loss: 0.000002\n",
      "Epoch: 16870/20000, Loss: 0.000002\n",
      "Epoch: 16880/20000, Loss: 0.000002\n",
      "Epoch: 16890/20000, Loss: 0.000002\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 16900/20000, Loss: 0.000002\n",
      "Epoch: 16910/20000, Loss: 0.000002\n",
      "Epoch: 16920/20000, Loss: 0.000002\n",
      "Epoch: 16930/20000, Loss: 0.000002\n",
      "Epoch: 16940/20000, Loss: 0.000002\n",
      "Epoch: 16950/20000, Loss: 0.000002\n",
      "Epoch: 16960/20000, Loss: 0.000003\n",
      "Epoch: 16970/20000, Loss: 0.000006\n",
      "Epoch: 16980/20000, Loss: 0.000003\n",
      "Epoch: 16990/20000, Loss: 0.000002\n",
      "Epoch: 17000/20000, Loss: 0.000002\n",
      "Epoch: 17010/20000, Loss: 0.000002\n",
      "Epoch: 17020/20000, Loss: 0.000002\n",
      "Epoch: 17030/20000, Loss: 0.000002\n",
      "Epoch: 17040/20000, Loss: 0.000002\n",
      "Epoch: 17050/20000, Loss: 0.000002\n",
      "Epoch: 17060/20000, Loss: 0.000002\n",
      "Epoch: 17070/20000, Loss: 0.000002\n",
      "Epoch: 17080/20000, Loss: 0.000002\n",
      "Epoch: 17090/20000, Loss: 0.000006\n",
      "Epoch: 17100/20000, Loss: 0.000003\n",
      "Epoch: 17110/20000, Loss: 0.000003\n",
      "Epoch: 17120/20000, Loss: 0.000002\n",
      "Epoch: 17130/20000, Loss: 0.000002\n",
      "Epoch: 17140/20000, Loss: 0.000002\n",
      "Epoch: 17150/20000, Loss: 0.000002\n",
      "Epoch: 17160/20000, Loss: 0.000002\n",
      "Epoch: 17170/20000, Loss: 0.000002\n",
      "Epoch: 17180/20000, Loss: 0.000002\n",
      "Epoch: 17190/20000, Loss: 0.000002\n",
      "Epoch: 17200/20000, Loss: 0.000002\n",
      "Epoch: 17210/20000, Loss: 0.000005\n",
      "Epoch: 17220/20000, Loss: 0.000002\n",
      "Epoch: 17230/20000, Loss: 0.000002\n",
      "Epoch: 17240/20000, Loss: 0.000002\n",
      "Epoch: 17250/20000, Loss: 0.000002\n",
      "Epoch: 17260/20000, Loss: 0.000002\n",
      "Epoch: 17270/20000, Loss: 0.000002\n",
      "Epoch: 17280/20000, Loss: 0.000002\n",
      "Epoch: 17290/20000, Loss: 0.000003\n",
      "Epoch: 17300/20000, Loss: 0.000003\n",
      "Epoch: 17310/20000, Loss: 0.000002\n",
      "Epoch: 17320/20000, Loss: 0.000002\n",
      "Epoch: 17330/20000, Loss: 0.000002\n",
      "Epoch: 17340/20000, Loss: 0.000002\n",
      "Epoch: 17350/20000, Loss: 0.000002\n",
      "Epoch: 17360/20000, Loss: 0.000004\n",
      "Epoch: 17370/20000, Loss: 0.000002\n",
      "Epoch: 17380/20000, Loss: 0.000002\n",
      "Epoch: 17390/20000, Loss: 0.000002\n",
      "Epoch: 17400/20000, Loss: 0.000002\n",
      "Epoch: 17410/20000, Loss: 0.000002\n",
      "Epoch: 17420/20000, Loss: 0.000003\n",
      "Epoch: 17430/20000, Loss: 0.000002\n",
      "Epoch: 17440/20000, Loss: 0.000002\n",
      "Epoch: 17450/20000, Loss: 0.000002\n",
      "Epoch: 17460/20000, Loss: 0.000003\n",
      "Epoch: 17470/20000, Loss: 0.000002\n",
      "Epoch: 17480/20000, Loss: 0.000002\n",
      "Epoch: 17490/20000, Loss: 0.000002\n",
      "Epoch: 17500/20000, Loss: 0.000003\n",
      "Epoch: 17510/20000, Loss: 0.000004\n",
      "Epoch: 17520/20000, Loss: 0.000003\n",
      "Epoch: 17530/20000, Loss: 0.000002\n",
      "Epoch: 17540/20000, Loss: 0.000002\n",
      "Epoch: 17550/20000, Loss: 0.000002\n",
      "Epoch: 17560/20000, Loss: 0.000002\n",
      "Epoch: 17570/20000, Loss: 0.000002\n",
      "Epoch: 17580/20000, Loss: 0.000002\n",
      "Epoch: 17590/20000, Loss: 0.000004\n",
      "Epoch: 17600/20000, Loss: 0.000002\n",
      "Epoch: 17610/20000, Loss: 0.000002\n",
      "Epoch: 17620/20000, Loss: 0.000002\n",
      "Epoch: 17630/20000, Loss: 0.000002\n",
      "Epoch: 17640/20000, Loss: 0.000002\n",
      "Epoch: 17650/20000, Loss: 0.000002\n",
      "Epoch: 17660/20000, Loss: 0.000002\n",
      "Epoch: 17670/20000, Loss: 0.000002\n",
      "Epoch: 17680/20000, Loss: 0.000002\n",
      "Epoch: 17690/20000, Loss: 0.000002\n",
      "Epoch: 17700/20000, Loss: 0.000005\n",
      "Epoch: 17710/20000, Loss: 0.000002\n",
      "Epoch: 17720/20000, Loss: 0.000003\n",
      "Epoch: 17730/20000, Loss: 0.000002\n",
      "Epoch: 17740/20000, Loss: 0.000002\n",
      "Epoch: 17750/20000, Loss: 0.000002\n",
      "Epoch: 17760/20000, Loss: 0.000002\n",
      "Epoch: 17770/20000, Loss: 0.000002\n",
      "Epoch: 17780/20000, Loss: 0.000002\n",
      "Epoch: 17790/20000, Loss: 0.000002\n",
      "Epoch: 17800/20000, Loss: 0.000002\n",
      "Epoch: 17810/20000, Loss: 0.000002\n",
      "Epoch: 17820/20000, Loss: 0.000002\n",
      "Epoch: 17830/20000, Loss: 0.000002\n",
      "Epoch: 17840/20000, Loss: 0.000002\n",
      "Epoch: 17850/20000, Loss: 0.000008\n",
      "Epoch: 17860/20000, Loss: 0.000004\n",
      "Epoch: 17870/20000, Loss: 0.000002\n",
      "Epoch: 17880/20000, Loss: 0.000002\n",
      "Epoch: 17890/20000, Loss: 0.000002\n",
      "Epoch: 17900/20000, Loss: 0.000002\n",
      "Epoch: 17910/20000, Loss: 0.000002\n",
      "Epoch: 17920/20000, Loss: 0.000002\n",
      "Epoch: 17930/20000, Loss: 0.000002\n",
      "Epoch: 17940/20000, Loss: 0.000002\n",
      "Epoch: 17950/20000, Loss: 0.000002\n",
      "Epoch: 17960/20000, Loss: 0.000002\n",
      "Epoch: 17970/20000, Loss: 0.000002\n",
      "Epoch: 17980/20000, Loss: 0.000002\n",
      "Epoch: 17990/20000, Loss: 0.000003\n",
      "Epoch: 18000/20000, Loss: 0.000003\n",
      "Epoch: 18010/20000, Loss: 0.000002\n",
      "Epoch: 18020/20000, Loss: 0.000002\n",
      "Epoch: 18030/20000, Loss: 0.000002\n",
      "Epoch: 18040/20000, Loss: 0.000002\n",
      "Epoch: 18050/20000, Loss: 0.000002\n",
      "Epoch: 18060/20000, Loss: 0.000002\n",
      "Epoch: 18070/20000, Loss: 0.000002\n",
      "Epoch: 18080/20000, Loss: 0.000002\n",
      "Epoch: 18090/20000, Loss: 0.000002\n",
      "Epoch: 18100/20000, Loss: 0.000002\n",
      "Epoch: 18110/20000, Loss: 0.000005\n",
      "Epoch: 18120/20000, Loss: 0.000002\n",
      "Epoch: 18130/20000, Loss: 0.000002\n",
      "Epoch: 18140/20000, Loss: 0.000002\n",
      "Epoch: 18150/20000, Loss: 0.000002\n",
      "Epoch: 18160/20000, Loss: 0.000002\n",
      "Epoch: 18170/20000, Loss: 0.000002\n",
      "Epoch: 18180/20000, Loss: 0.000002\n",
      "Epoch: 18190/20000, Loss: 0.000002\n",
      "Epoch: 18200/20000, Loss: 0.000002\n",
      "Epoch: 18210/20000, Loss: 0.000002\n",
      "Epoch: 18220/20000, Loss: 0.000002\n",
      "Epoch: 18230/20000, Loss: 0.000002\n",
      "Epoch: 18240/20000, Loss: 0.000004\n",
      "Epoch: 18250/20000, Loss: 0.000002\n",
      "Epoch: 18260/20000, Loss: 0.000003\n",
      "Epoch: 18270/20000, Loss: 0.000002\n",
      "Epoch: 18280/20000, Loss: 0.000002\n",
      "Epoch: 18290/20000, Loss: 0.000002\n",
      "Epoch: 18300/20000, Loss: 0.000002\n",
      "Epoch: 18310/20000, Loss: 0.000002\n",
      "Epoch: 18320/20000, Loss: 0.000002\n",
      "Epoch: 18330/20000, Loss: 0.000002\n",
      "Epoch: 18340/20000, Loss: 0.000002\n",
      "Epoch: 18350/20000, Loss: 0.000002\n",
      "Epoch: 18360/20000, Loss: 0.000002\n",
      "Epoch: 18370/20000, Loss: 0.000002\n",
      "Epoch: 18380/20000, Loss: 0.000002\n",
      "Epoch: 18390/20000, Loss: 0.000002\n",
      "Epoch: 18400/20000, Loss: 0.000002\n",
      "Epoch: 18410/20000, Loss: 0.000002\n",
      "Epoch: 18420/20000, Loss: 0.000005\n",
      "Epoch: 18430/20000, Loss: 0.000003\n",
      "Epoch: 18440/20000, Loss: 0.000003\n",
      "Epoch: 18450/20000, Loss: 0.000002\n",
      "Epoch: 18460/20000, Loss: 0.000002\n",
      "Epoch: 18470/20000, Loss: 0.000002\n",
      "Epoch: 18480/20000, Loss: 0.000002\n",
      "Epoch: 18490/20000, Loss: 0.000002\n",
      "Epoch: 18500/20000, Loss: 0.000002\n",
      "Epoch: 18510/20000, Loss: 0.000002\n",
      "Epoch: 18520/20000, Loss: 0.000002\n",
      "Epoch: 18530/20000, Loss: 0.000002\n",
      "Epoch: 18540/20000, Loss: 0.000002\n",
      "Epoch: 18550/20000, Loss: 0.000002\n",
      "Epoch: 18560/20000, Loss: 0.000003\n",
      "Epoch: 18570/20000, Loss: 0.000003\n",
      "Epoch: 18580/20000, Loss: 0.000002\n",
      "Epoch: 18590/20000, Loss: 0.000002\n",
      "Epoch: 18600/20000, Loss: 0.000002\n",
      "Epoch: 18610/20000, Loss: 0.000002\n",
      "Epoch: 18620/20000, Loss: 0.000002\n",
      "Epoch: 18630/20000, Loss: 0.000002\n",
      "Epoch: 18640/20000, Loss: 0.000002\n",
      "Epoch: 18650/20000, Loss: 0.000002\n",
      "Epoch: 18660/20000, Loss: 0.000002\n",
      "Epoch: 18670/20000, Loss: 0.000002\n",
      "Epoch: 18680/20000, Loss: 0.000002\n",
      "Epoch: 18690/20000, Loss: 0.000002\n",
      "Epoch: 18700/20000, Loss: 0.000002\n",
      "Epoch: 18710/20000, Loss: 0.000002\n",
      "Epoch: 18720/20000, Loss: 0.000003\n",
      "Epoch: 18730/20000, Loss: 0.000004\n",
      "Epoch: 18740/20000, Loss: 0.000002\n",
      "Epoch: 18750/20000, Loss: 0.000002\n",
      "Epoch: 18760/20000, Loss: 0.000002\n",
      "Epoch: 18770/20000, Loss: 0.000002\n",
      "Epoch: 18780/20000, Loss: 0.000002\n",
      "Epoch: 18790/20000, Loss: 0.000002\n",
      "Epoch: 18800/20000, Loss: 0.000002\n",
      "Epoch: 18810/20000, Loss: 0.000002\n",
      "Epoch: 18820/20000, Loss: 0.000002\n",
      "Epoch: 18830/20000, Loss: 0.000002\n",
      "Epoch: 18840/20000, Loss: 0.000003\n",
      "Epoch: 18850/20000, Loss: 0.000002\n",
      "Epoch: 18860/20000, Loss: 0.000002\n",
      "Epoch: 18870/20000, Loss: 0.000002\n",
      "Epoch: 18880/20000, Loss: 0.000002\n",
      "Epoch: 18890/20000, Loss: 0.000002\n",
      "Epoch: 18900/20000, Loss: 0.000002\n",
      "Epoch: 18910/20000, Loss: 0.000002\n",
      "Epoch: 18920/20000, Loss: 0.000002\n",
      "Epoch: 18930/20000, Loss: 0.000002\n",
      "Epoch: 18940/20000, Loss: 0.000002\n",
      "Epoch: 18950/20000, Loss: 0.000002\n",
      "Epoch: 18960/20000, Loss: 0.000002\n",
      "Epoch: 18970/20000, Loss: 0.000002\n",
      "Epoch: 18980/20000, Loss: 0.000002\n",
      "Epoch: 18990/20000, Loss: 0.000002\n",
      "Epoch: 19000/20000, Loss: 0.000008\n",
      "Epoch: 19010/20000, Loss: 0.000002\n",
      "Epoch: 19020/20000, Loss: 0.000002\n",
      "Epoch: 19030/20000, Loss: 0.000002\n",
      "Epoch: 19040/20000, Loss: 0.000002\n",
      "Epoch: 19050/20000, Loss: 0.000002\n",
      "Epoch: 19060/20000, Loss: 0.000002\n",
      "Epoch: 19070/20000, Loss: 0.000002\n",
      "Epoch: 19080/20000, Loss: 0.000002\n",
      "Epoch: 19090/20000, Loss: 0.000002\n",
      "Epoch: 19100/20000, Loss: 0.000002\n",
      "Epoch: 19110/20000, Loss: 0.000002\n",
      "Epoch: 19120/20000, Loss: 0.000002\n",
      "Epoch: 19130/20000, Loss: 0.000002\n",
      "Epoch: 19140/20000, Loss: 0.000002\n",
      "Epoch: 19150/20000, Loss: 0.000002\n",
      "Epoch: 19160/20000, Loss: 0.000002\n",
      "Epoch: 19170/20000, Loss: 0.000005\n",
      "Epoch: 19180/20000, Loss: 0.000003\n",
      "Epoch: 19190/20000, Loss: 0.000002\n",
      "Epoch: 19200/20000, Loss: 0.000002\n",
      "Epoch: 19210/20000, Loss: 0.000002\n",
      "Epoch: 19220/20000, Loss: 0.000002\n",
      "Epoch: 19230/20000, Loss: 0.000002\n",
      "Epoch: 19240/20000, Loss: 0.000002\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 19250/20000, Loss: 0.000002\n",
      "Epoch: 19260/20000, Loss: 0.000002\n",
      "Epoch: 19270/20000, Loss: 0.000002\n",
      "Epoch: 19280/20000, Loss: 0.000007\n",
      "Epoch: 19290/20000, Loss: 0.000004\n",
      "Epoch: 19300/20000, Loss: 0.000002\n",
      "Epoch: 19310/20000, Loss: 0.000002\n",
      "Epoch: 19320/20000, Loss: 0.000002\n",
      "Epoch: 19330/20000, Loss: 0.000002\n",
      "Epoch: 19340/20000, Loss: 0.000002\n",
      "Epoch: 19350/20000, Loss: 0.000002\n",
      "Epoch: 19360/20000, Loss: 0.000002\n",
      "Epoch: 19370/20000, Loss: 0.000002\n",
      "Epoch: 19380/20000, Loss: 0.000002\n",
      "Epoch: 19390/20000, Loss: 0.000002\n",
      "Epoch: 19400/20000, Loss: 0.000002\n",
      "Epoch: 19410/20000, Loss: 0.000002\n",
      "Epoch: 19420/20000, Loss: 0.000002\n",
      "Epoch: 19430/20000, Loss: 0.000002\n",
      "Epoch: 19440/20000, Loss: 0.000002\n",
      "Epoch: 19450/20000, Loss: 0.000002\n",
      "Epoch: 19460/20000, Loss: 0.000010\n",
      "Epoch: 19470/20000, Loss: 0.000002\n",
      "Epoch: 19480/20000, Loss: 0.000002\n",
      "Epoch: 19490/20000, Loss: 0.000002\n",
      "Epoch: 19500/20000, Loss: 0.000002\n",
      "Epoch: 19510/20000, Loss: 0.000002\n",
      "Epoch: 19520/20000, Loss: 0.000002\n",
      "Epoch: 19530/20000, Loss: 0.000002\n",
      "Epoch: 19540/20000, Loss: 0.000002\n",
      "Epoch: 19550/20000, Loss: 0.000002\n",
      "Epoch: 19560/20000, Loss: 0.000002\n",
      "Epoch: 19570/20000, Loss: 0.000002\n",
      "Epoch: 19580/20000, Loss: 0.000002\n",
      "Epoch: 19590/20000, Loss: 0.000002\n",
      "Epoch: 19600/20000, Loss: 0.000002\n",
      "Epoch: 19610/20000, Loss: 0.000002\n",
      "Epoch: 19620/20000, Loss: 0.000002\n",
      "Epoch: 19630/20000, Loss: 0.000002\n",
      "Epoch: 19640/20000, Loss: 0.000002\n",
      "Epoch: 19650/20000, Loss: 0.000003\n",
      "Epoch: 19660/20000, Loss: 0.000002\n",
      "Epoch: 19670/20000, Loss: 0.000004\n",
      "Epoch: 19680/20000, Loss: 0.000002\n",
      "Epoch: 19690/20000, Loss: 0.000002\n",
      "Epoch: 19700/20000, Loss: 0.000002\n",
      "Epoch: 19710/20000, Loss: 0.000002\n",
      "Epoch: 19720/20000, Loss: 0.000002\n",
      "Epoch: 19730/20000, Loss: 0.000001\n",
      "Epoch: 19740/20000, Loss: 0.000001\n",
      "Epoch: 19750/20000, Loss: 0.000001\n",
      "Epoch: 19760/20000, Loss: 0.000001\n",
      "Epoch: 19770/20000, Loss: 0.000001\n",
      "Epoch: 19780/20000, Loss: 0.000001\n",
      "Epoch: 19790/20000, Loss: 0.000001\n",
      "Epoch: 19800/20000, Loss: 0.000001\n",
      "Epoch: 19810/20000, Loss: 0.000001\n",
      "Epoch: 19820/20000, Loss: 0.000001\n",
      "Epoch: 19830/20000, Loss: 0.000001\n",
      "Epoch: 19840/20000, Loss: 0.000002\n",
      "Epoch: 19850/20000, Loss: 0.000002\n",
      "Epoch: 19860/20000, Loss: 0.000002\n",
      "Epoch: 19870/20000, Loss: 0.000004\n",
      "Epoch: 19880/20000, Loss: 0.000001\n",
      "Epoch: 19890/20000, Loss: 0.000002\n",
      "Epoch: 19900/20000, Loss: 0.000002\n",
      "Epoch: 19910/20000, Loss: 0.000002\n",
      "Epoch: 19920/20000, Loss: 0.000002\n",
      "Epoch: 19930/20000, Loss: 0.000001\n",
      "Epoch: 19940/20000, Loss: 0.000001\n",
      "Epoch: 19950/20000, Loss: 0.000002\n",
      "Epoch: 19960/20000, Loss: 0.000003\n",
      "Epoch: 19970/20000, Loss: 0.000002\n",
      "Epoch: 19980/20000, Loss: 0.000002\n",
      "Epoch: 19990/20000, Loss: 0.000002\n",
      "Epoch: 20000/20000, Loss: 0.000001\n"
     ]
    }
   ],
   "source": [
    "# Create LEM instance\n",
    "lem = LEM(input_size, hidden_size, output_size, dt=0.1)\n",
    "\n",
    "# Loss and optimizer\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(lem.parameters(), lr=0.001)\n",
    "\n",
    "\n",
    "\n",
    "# Training loop\n",
    "for epoch in range(num_epochs):\n",
    "    # Forward pass\n",
    "    output = lem(input_tensor)\n",
    "    loss = criterion(output, target_tensor)\n",
    "\n",
    "    # Backward and optimize\n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "\n",
    "    # Print progress\n",
    "    if (epoch + 1) % 10 == 0:\n",
    "        print(f'Epoch: {epoch + 1}/{num_epochs}, Loss: {loss.item():.6f}')\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "10e64d58",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1.26449104])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t[:, -40]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "5551399f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 256)\n",
      "(1, 201)\n",
      "(256, 201)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/data/localhome/tkapoor/.local/lib/python3.8/site-packages/numpy/ma/core.py:2820: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  _data = np.array(data, dtype=dtype, copy=copy,\n",
      "/usr/local/lib/python3.8/dist-packages/matplotlib/contour.py:1180: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  self.levels = np.asarray(levels_arg).astype(np.float64)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 720x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# Load the .mat file\n",
    "mat_data = scipy.io.loadmat('NLS.mat')\n",
    "\n",
    "# Following is the code to plot the data u vs x and t. u is 256*100\n",
    "# matrix. Use first 75 columns for training and 25 for testing :)\n",
    "\n",
    "# Access the variables stored in the .mat file\n",
    "# The variable names in the .mat file become keys in the loaded dictionary\n",
    "x = mat_data['x']\n",
    "t = mat_data['tt']\n",
    "u = mat_data['uu']\n",
    "\n",
    "# Use the loaded variables as needed\n",
    "print(x.shape)\n",
    "print(t.shape)\n",
    "print(u.shape)\n",
    "\n",
    "X, T = np.meshgrid(x, t)\n",
    "# Define custom color levels\n",
    "c_levels = np.linspace(np.min(u), np.max(u), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure()\n",
    "plt.figure(figsize=(15, 5))\n",
    "plt.contourf(T, X, u.T, levels=c_levels, cmap='coolwarm')\n",
    "plt.xlabel('t')\n",
    "plt.ylabel('x')\n",
    "plt.title('Schrondinger-Equation')\n",
    "plt.colorbar()  # Add a colorbar for the contour levels\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c73d52c8",
   "metadata": {},
   "source": [
    "### 80 percent PINN solution 20 lem prediction in contour plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "3c3adab4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([40, 256])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prediction.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ee92d59f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 160, 256])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "input_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "da346f5f",
   "metadata": {},
   "outputs": [],
   "source": [
    "conc_u = torch.squeeze(input_tensor)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "4369387d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([200, 256])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "concatenated_tensor = torch.cat((conc_u, prediction), dim=0)\n",
    "\n",
    "concatenated_tensor.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "83ae3691",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.        , 0.00785398, 0.01570796, 0.02356194, 0.03141593,\n",
       "        0.03926991, 0.04712389, 0.05497787, 0.06283185, 0.07068583,\n",
       "        0.07853982, 0.0863938 , 0.09424778, 0.10210176, 0.10995574,\n",
       "        0.11780972, 0.12566371, 0.13351769, 0.14137167, 0.14922565,\n",
       "        0.15707963, 0.16493361, 0.1727876 , 0.18064158, 0.18849556,\n",
       "        0.19634954, 0.20420352, 0.2120575 , 0.21991149, 0.22776547,\n",
       "        0.23561945, 0.24347343, 0.25132741, 0.25918139, 0.26703538,\n",
       "        0.27488936, 0.28274334, 0.29059732, 0.2984513 , 0.30630528,\n",
       "        0.31415927, 0.32201325, 0.32986723, 0.33772121, 0.34557519,\n",
       "        0.35342917, 0.36128316, 0.36913714, 0.37699112, 0.3848451 ,\n",
       "        0.39269908, 0.40055306, 0.40840704, 0.41626103, 0.42411501,\n",
       "        0.43196899, 0.43982297, 0.44767695, 0.45553093, 0.46338492,\n",
       "        0.4712389 , 0.47909288, 0.48694686, 0.49480084, 0.50265482,\n",
       "        0.51050881, 0.51836279, 0.52621677, 0.53407075, 0.54192473,\n",
       "        0.54977871, 0.5576327 , 0.56548668, 0.57334066, 0.58119464,\n",
       "        0.58904862, 0.5969026 , 0.60475659, 0.61261057, 0.62046455,\n",
       "        0.62831853, 0.63617251, 0.64402649, 0.65188048, 0.65973446,\n",
       "        0.66758844, 0.67544242, 0.6832964 , 0.69115038, 0.69900437,\n",
       "        0.70685835, 0.71471233, 0.72256631, 0.73042029, 0.73827427,\n",
       "        0.74612826, 0.75398224, 0.76183622, 0.7696902 , 0.77754418,\n",
       "        0.78539816, 0.79325215, 0.80110613, 0.80896011, 0.81681409,\n",
       "        0.82466807, 0.83252205, 0.84037603, 0.84823002, 0.856084  ,\n",
       "        0.86393798, 0.87179196, 0.87964594, 0.88749992, 0.89535391,\n",
       "        0.90320789, 0.91106187, 0.91891585, 0.92676983, 0.93462381,\n",
       "        0.9424778 , 0.95033178, 0.95818576, 0.96603974, 0.97389372,\n",
       "        0.9817477 , 0.98960169, 0.99745567, 1.00530965, 1.01316363,\n",
       "        1.02101761, 1.02887159, 1.03672558, 1.04457956, 1.05243354,\n",
       "        1.06028752, 1.0681415 , 1.07599548, 1.08384947, 1.09170345,\n",
       "        1.09955743, 1.10741141, 1.11526539, 1.12311937, 1.13097336,\n",
       "        1.13882734, 1.14668132, 1.1545353 , 1.16238928, 1.17024326,\n",
       "        1.17809725, 1.18595123, 1.19380521, 1.20165919, 1.20951317,\n",
       "        1.21736715, 1.22522113, 1.23307512, 1.2409291 , 1.24878308,\n",
       "        1.25663706, 1.26449104, 1.27234502, 1.28019901, 1.28805299,\n",
       "        1.29590697, 1.30376095, 1.31161493, 1.31946891, 1.3273229 ,\n",
       "        1.33517688, 1.34303086, 1.35088484, 1.35873882, 1.3665928 ,\n",
       "        1.37444679, 1.38230077, 1.39015475, 1.39800873, 1.40586271,\n",
       "        1.41371669, 1.42157068, 1.42942466, 1.43727864, 1.44513262,\n",
       "        1.4529866 , 1.46084058, 1.46869457, 1.47654855, 1.48440253,\n",
       "        1.49225651, 1.50011049, 1.50796447, 1.51581846, 1.52367244,\n",
       "        1.53152642, 1.5393804 , 1.54723438, 1.55508836, 1.56294235,\n",
       "        1.57079633]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "f8833373",
   "metadata": {},
   "outputs": [],
   "source": [
    "t1 = np.linspace(0, 1.5707 , 200)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "3e19cc08",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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OtGAGXsC13H312cUYz+i4Wa/a2afN7O3xdu6b1w+2aTqnjsT7gyc5e6/yFn/p+L1P9TMvmNmnwGeTvSFwhnxbKtEjzd4BfADM3sLcFvgcV6t+60sGDO7D9Ez4/4auCzR8ZG8nmYem2b2BOBsovPiNYHvmdnf5mymjWNYNpkax2ad81zhsRmX4wmEH+vSMVu/boqIiIiIiEjbNkVLl4iIiIiISF8UukRERERERDqk0CUiIiIiItIhhS4REREREZEOKXSJiIiIiIh0SKFLRERERESkQwpdIiIiIiIiHVLoEhGRzpnZE83Mzex+fZdFRERk1hS6RERkFo6If5/RaylERER6YO7edxlERGTBmdn3gQOBPV0XHhER2WTU0iUiIp0xsxPMzIHDgN2BtbiboZvZcT0XT0REZCaW+y6AiIgstG8A7wD+HvgKcFLitZP7KJCIiMisKXSJiEhn3P0DZrYXUeh6h7uf2HORREREZk7dC0VEpGuHx7+/0WspREREeqLQJSIiXTsc2AF8p++CiIiI9EGhS0REOmNmy8B1gO+5+7a+yyMiItIHhS4REenSNYFdUNdCERHZxBS6RESkS9eLf5/ZZyFERET6pNAlIiJd2if+fUGvpRAREemRhowXEZEunRH//mczuzZwEXCWu3+wxzKJiIjMlFq6RESkM+7+JeBxRGHrccDzWO9yKCIisimYu/ddBhERERERkYWlli4REREREZEOKXSJiIiIiIh0SKFLRERERESkQwpdIiIiIiIiHVLoEhERERER6ZBCl4iIiIiISIcUukRERERERDqk0CUiIiIiItIhhS4REREREZEOKXSJiIiIiIh06P8DG9j2jR3bjsUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1080x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FixedLocator\n",
    "\n",
    "# Assuming you have defined concatenated_tensor as a PyTorch tensor\n",
    "# concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)\n",
    "\n",
    "# Convert concatenated_tensor to a NumPy array\n",
    "concatenated_array = concatenated_tensor.numpy()\n",
    "\n",
    "# Define custom color levels\n",
    "X, T = np.meshgrid(x, t1)\n",
    "\n",
    "# Define custom color levels using the minimum and maximum from the NumPy array\n",
    "c_levels = np.linspace(np.min(concatenated_array), np.max(concatenated_array), 100)\n",
    "\n",
    "# Plot the contour\n",
    "plt.figure(figsize=(15, 5))\n",
    "CS1 = plt.contourf(T, X, concatenated_array, levels=c_levels, cmap='coolwarm')\n",
    "\n",
    "# Create a custom font with Times New Roman\n",
    "plt.rcParams['figure.figsize'] = [10, 4]\n",
    "\n",
    "from matplotlib.font_manager import FontProperties\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "font_path = 'times-new-roman.ttf'\n",
    "custom_font = FontProperties(fname=font_path)\n",
    "\n",
    "cbar1 = plt.colorbar(CS1)\n",
    "# Set the number of ticks for the color bar with uniformly distributed numbers\n",
    "num_ticks = 5\n",
    "c_ticks = np.linspace(np.min(concatenated_array), np.max(concatenated_array), num_ticks)\n",
    "cbar1.set_ticks(c_ticks)\n",
    "\n",
    "for t in cbar1.ax.get_yticklabels():\n",
    "    t.set_fontproperties(custom_font)\n",
    "    t.set_fontsize(20)\n",
    "\n",
    "plt.xlabel('$t$', fontsize=20, fontproperties=custom_font)\n",
    "plt.ylabel('$x$', fontsize=20, fontproperties=custom_font)\n",
    "plt.title('$u(x, t)$', fontsize=20, fontproperties=custom_font)\n",
    "plt.xticks(fontsize=20, fontproperties=custom_font)\n",
    "plt.yticks(fontsize=20, fontproperties=custom_font)\n",
    "\n",
    "# Add a dotted line at t = 0.8\n",
    "plt.axvline(x=1.26449, color='black', linestyle='dotted')\n",
    "\n",
    "# Set the number of ticks for x-axis and y-axis to 5\n",
    "num_ticks = 5\n",
    "x_ticks = np.linspace(np.min(T), np.max(T), num_ticks)\n",
    "y_ticks = np.linspace(np.min(X), np.max(X), num_ticks)\n",
    "\n",
    "plt.gca().xaxis.set_major_locator(FixedLocator(x_ticks))\n",
    "plt.gca().yaxis.set_major_locator(FixedLocator(y_ticks))\n",
    "cbar1.locator = FixedLocator(c_ticks)\n",
    "\n",
    "plt.savefig('Schr_80_20.pdf', dpi=300)\n",
    "plt.savefig('schr_80_20.png', dpi=300)\n",
    "# Show the plot\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b4a51b8e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "pytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
